- 博客(9)
- 收藏
- 关注
原创 033-Search in Rotated Sorted Array-在移动过的有序序列中搜索
给定一个升序数列,将其进行随机旋转,如01234567可能变成56701234,如果搜寻的数在里面则返回序号,否则返回-1从头遍历到尾当然可以,但是为了提高效率,利用好有序排列的前提,这里使用调整过的二分查找法。旋转有序链表有个特点,他肯定是分成了左右两个部分,每个部分单独为一段有序列表。我们在对mid进行分析的时候,分情况讨论搜索数字所可能落在的对应区间应满足的条件。(1)mid取到了目标数,返...
2018-02-22 21:43:50
189
原创 016-3Sum Closest-三元素和最接近解
和15题基本一致,if else分支记得改为判断当前这一组三元素和(记为sum)和target差值的绝对值大小,更小则更新结果。由于向内收缩可能不断更新解,所以while条件用low<high就行了,不用停止直到高低位相遇。贴代码:public class threeClosest { public static int threeSumClosest(int[] nums, int ta...
2018-02-22 19:17:20
220
原创 029-Divide Two Integers-不用乘除取模来实现整型除法
不用乘除取模来实现整型除法。这题的关键在于用左移操作<<来取代乘法,每左移一位则相当于数字翻倍。保证每一轮的被除数大于除数的前提下,不断翻倍除数直到最大,倍数记录于结果,然后做差并将其记为下一轮的被除数。这里需要注意的是int类型的边界:最小值:Integer.MIN_VALUE=-2147483648最大值:Integer.MAX_VALUE=2147483647比如-214748...
2018-02-21 22:30:24
314
原创 15-3Sum-找和为0的所有三元素解组合
给定一个含n个元素的序列,找出其中所有和为0的三元素解集合。例子:For example, given array S = [-1, 0, 1, 2, -1, -4],A solution set is:[ [-1, 0, 1], [-1, -1, 2]]首先一点,暴力穷尽搜索能够很简单的解决问题,但是时间超过了及格线,所以一定要用些优化的算法。解决这道题的基本思路如下:(1)将整...
2018-02-18 22:47:47
242
原创 11-Container with Most Water-把数组看成装水的容器
给定n个非负整数a1,a2,...,an,其中每个代表坐标(i,ai)处的一个点。绘制n条垂直线,使得线i的两个端点处于(i,ai)和(i,0)处。找到两条线,它们与x轴一起形成一个容器,使得容器包含最多的水。容器无法倾斜,n至少为2。木桶效应,一个水桶装多少水取决于最短的木板,这是隐含条件。所以我们的最终运算结果应该是:(high-low)*Math.min( height[low],
2018-01-22 22:01:23
439
原创 21-Merge Two Sorted Lists-合并两个有序单链表
合并两个有序单链表,并返回一个合并后的链表。例子:Input: 1->2->4, 1->3->4Output: 1->1->2->3->4->4我这种傻瓜的思路就只是合并链表的基本算法,挨个节点进行比较,较小的一方接入结果链表并向next移动一位,指导两个后续列表都为空,或者一方为空则贴上另一方的剩余部分链表。贴代码:public class ListNode {
2018-01-22 13:21:16
206
原创 02-Add Two Numbers-用链表实现正整数的加法
给定两个非空链表,每个元素存放一个个位数,且逆向存储。试着把这两个链表看成两个数进行加法,并返回一个单链表存放结果。例子:Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 -> 0 -> 8Explanation: 342 + 465 = 807.考察单链表的遍历操作,需要注意的细节就是进位问题。比如例子中的4+6=10,向前进位1。实
2018-01-22 12:23:52
403
原创 28-Implement strStr()-子串的检测
给定字符串haystack和needle,检测needle是不是haystack的子串,是则返回索引,否则返回-1。例子:Input: haystack = "aaaaa", needle = "bba"Output: -1第一反应多简单啊一行代码解决:public static int strStr(String haystack, String needle){ r
2018-01-21 21:41:13
297
原创 01-Two Sum-返回和为特定值的两个元素索引
给定一个数列(未必按序排列)和一个整数,求这个数列中两个和为此整数的数的序号。假设一个数列中只会有一组解,并且一个数只能使用一次。例子:Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].一种解法:public class TwoSums {
2018-01-21 21:04:23
263
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅