Binary search is a famous question in algorithm. For a given sorted array (ascending order) and a target number, find the first index of this number in O(log n) time complexity. If the target number does not exist in the array, return -1. Example If…
找指定target的最左位置. class Solution { /** * @param nums: The integer array. * @param target: Target to find. * @return: The first position of target. Position starts from 0. */ public int binarySearch(int[] nums, int target) { if(nums == null) return -1;…
Given a binary search tree and a new tree node, insert the node into the tree. You should keep the tree still be a valid binary search tree. Example Given binary search tree as follow: 2 / \ 1 4 / 3 after Insert node 6, the tree should be: 2 / \ 1 4…
题目 不同的二叉查找树 给出 n,问由 1...n 为节点组成的不同的二叉查找树有多少种? 样例 给出n = 3,有5种不同形态的二叉查找树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3 解题 public class Solution { /** * @paramn n: An integer * @return: An integer */ public int numTrees(int n) { // write your code…
C++ /** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { public: /** * @param A: A sorted (increasi…
Description Given a sorted array of n integers, find the starting and ending position of a given target value. If the target is not found in the array, return [-1, -1]. Example Given [5, 7, 7, 8, 8, 10] and target value 8,return [3, 4]. Challenge O(l…
704. Binary Search 1.使用start+1 < end,这样保证最后剩两个数 2.mid = start + (end - start)/2,这样避免接近max-int导致的溢出 3.start.end直接等于mid 4.最后比较两个位置 class Solution { public: int search(vector<int>& nums, int target) { if(nums.empty()) ; ; ; int mid; < end){ m…
Given an array consists of non-negative integers, your task is to count the number of triplets chosen from the array that can make triangles if we take them as side lengths of a triangle. Example 1: Input: [2,2,3,4] Output: 3 Explanation: Valid combi…
Binary Search模板: mid 和 target 指针比较,left/ right 和 target 比较. 循环终止条件: 最后剩两数比较(while(left + 1 < right)). 循环结束后根据要求检查最后两个数(left/ right 和 target 比较). public class Solution { /** *@param A : an integer sorted array *@param target : an integer to be inserte…
We all know how to search through an array for an element whose value equals the target value, but how to search for the element that has value greater than the target value? A particularly elegant way of thinking about this problem is to think about…