摘要: 题目说了,峰值元素就是大于相邻左右元素的元素,又说了nums[-1] = nums[n] = -∞,所以我们就寻思着,如果nums[0]比nums[1]大,再加上nums[-1]是负无穷,那么nums[0]不就是一个峰值元素了吗。 如果nums[0]不比nums[1]大,那么我们接着把nums[1] 阅读全文
posted @ 2020-07-31 22:14 machine_gun_lin 阅读(73) 评论(0) 推荐(0)
摘要: 这题做法比较贼,让两个指针p, q分别指向两个链表的头,然后只要两个指针不为空且指向的位置不同,就都向后移动,当一个指针为空的时候,就指向另一个链表的头。 比如上面这图,假设相交部分之前,两个链表的长度分别是a,b,相交链表之后的长度为c。 那么p指针走了a + c长度(走完第一个链表)之后,指向第 阅读全文
posted @ 2020-07-31 21:40 machine_gun_lin 阅读(53) 评论(0) 推荐(0)
摘要: 要能够在常数时间内检索到栈内最小元素,我们可以额外开一个栈,这个额外的栈的栈顶元素存放目前栈内的最小元素,每次栈内压入一个新元素,辅助栈也压入一个元素,也就是把新元素和原栈顶元素比较,较小的那个就是新的最小元素,压入辅助栈的栈顶;原栈弹出栈顶元素的时候,辅助栈也弹出栈顶元素,这样,不管什么时候,辅助 阅读全文
posted @ 2020-07-31 21:22 machine_gun_lin 阅读(46) 评论(0) 推荐(0)
摘要: 经过旋转后的数组,满足这样一个性质,最小值右边的元素,都大于等于最小值(因为这题有重复元素,所以有可能等于),最小值左边的元素,都大于等于最小值。 所以每一次二分,我们可以与当前区间的最左边或最右边进行比较,确定最小值的位置。 这里我们每次将区间中点的值nums[mid]与区间右端点nums[rig 阅读全文
posted @ 2020-07-31 21:04 machine_gun_lin 阅读(74) 评论(0) 推荐(0)