摘要:
思路:其实就是用普通的二分查找,只不过在找不到该数时,left下标就是应该插入的位置,返回该下标即可。Java代码如下: public int searchInsert(int[] nums, int target) { int left = 0; int righ... 阅读全文
摘要:
思路:就是二分查找,只是查找一个数的范围,思路和二分查找相似,只是在mid查找到此数后,利用right-- 或 left++ 寻找该数的右边界和左边界。Java代码如下: public int[] searchRange(int[] nums, int target) { int... 阅读全文
摘要:
思路:因为nums1的空间>= m+n,故可以用三个指针, k = m+n-1, i = m - 1, j = n - 1,操作都在数组nums1上进行,最后再把nums2中剩余的元素拷贝到nums1中即可。Java代码如下: public void merge(int[] nums1, in... 阅读全文
摘要:
思路:数组元素删除操作较麻烦,这里采用的是交换元素法,利用两个指针分别指数组的开头下标和尾部下标,把要删除的元素放在数组的最后,最后返回前面指针的下标。Java代码: public int removeElement(int[] nums, int val) { int l = ... 阅读全文
摘要:
思路:像题目中的例子,则结果返回数组元素0。和普通的二分查找不同的是,该二分查找的循环条件为(l num[r])。Java代码如下: public int findMin(int[] num) { int l = 0, r = num.length-1; whil... 阅读全文
摘要:
思路:最大面积等于两条垂直线中较小的一条乘以与x轴相交的长度,可以使用Two Pointers,一个从数组头开始(记为i),一个从数组尾部开始(记为j),当i result) result = tmp; if (height[i] < heigh... 阅读全文
摘要:
思路:只需遍历一次数组,利用HashMap保存数组元素和下标,如果target-数组元素存在HashMap的key中,则返回结果,如果不存在,则put到HashMap中,注意,这种遍历保证了数组的下标肯定不小于HashMap中的下标。Java代码: public int[] twoSum(in... 阅读全文