All of LeetCode

来源:互联网 发布:Java毫秒和日期的换算 编辑:程序博客网 时间:2024/06/06 01:52

33.Search in Rotated Sorted Array

在一个由有序数组演变的数组中进行查找,为了满足复杂度的需求,显然不能Arrays.sort,这里采用类似二分查找的查找方式,只不过多了首尾与中间值的对比。其每次循环所做的事如下:
1. 若中间值等于target,则输出其下表;
2. 若首小于中间值,说明数组递增或者旋转过半,分情况考虑,若为前者,则正常二分查找,
毕竟要么前段有序要么后端有序,故总可以二分或迭代。

关键:类比二分查找,部分有序

34.Search for a range
思路是写一个static函数可以找到和target相等的第一个数,实现方法依然是利用二分查找,关键点在于运用时寻找target结束点等于下一个开始点=1,很棒的思路。
我自己写的时候主要问题在于数组越界,总想与前后进行比较从而使得其越界,代码段不能重复使用,没有这个static函数优雅整齐。

关键:利用int+1来查找int的结束点,二分查找

升华:他貌似让你找的是两个点,但其实你应该找一个面,你找一个面的方法是找两个点,这个题告诉我,以点带面,一带一路。很重要。f(int+1)-1

原创粉丝点击