- 博客(6)
- 资源 (5)
- 收藏
- 关注
原创 Leetcode|递归分治法|面试题 08.06. 汉诺塔问题
1 递归分支法 用数学归纳法解决 n = 1,盘子从A直接移动到C n = 2 n = k,将A上n-1个盘子移动到B,然后将最底下的盘子移动到C,最后将B中的盘子移动到C class Solution { public: void hanota(vector<int>& A, vector<int>& B, vector<int>& C) { int n = A.size(); move(n, A,.
2021-09-15 22:17:58 305
原创 Leetcode|二分+缩小右区间去重|154. 寻找旋转排序数组中的最小值 II
1 二分+缩小右区间去重 情况1——nums[mid]在最小值右边或就是最小值 情况2——nums[mid]在最小值左边 对于重复数组,又多了情况三 情况3——nums[mid]和nums[right]相等重复 class Solution { public: int findMin(vector<int>& nums) { int size = nums.size(); int left = 0, right = size -.
2021-09-12 16:27:09 197
原创 Leetcode|二分查找|153. 寻找旋转排序数组中的最小值
1 二分查找(注意右边界控制) 情况1——nums[mid]在最小值右边或就是最小值 情况2——nums[mid]在最小值左边 class Solution { public: int findMin(vector<int>& nums) { int size = nums.size(); int left = 0, right = size - 1; // 不能是left <= right, 当nums={2,.
2021-09-12 15:59:40 283
原创 Leetcode|快慢指针|61. 旋转链表
1 快慢指针 class Solution { public: ListNode* rotateRight(ListNode* head, int k) { if (!head || k == 0) return head; int size = 0; auto node = head; // 记录链表长度为size while (node) { size++; ..
2021-09-09 17:02:15 156
原创 Leetcode|快排|912. 排序数组
1 快速排序(随机pivot) 为什么随机取pivot能避免最坏的情况呢? 假设数据是完全随机的话,固定取最后一个数作为pivot,和随机取pivot,达成pivot本身有序的概率是相等的。但实际情况并非如此,实际的数据里有序的情况是多于完全无序的情况的,所以随机取pivot能减少最坏情况出现的概率 class Solution { public: void quickSort(vector<int>& nums, int left, int right) { .
2021-09-08 16:25:13 324
原创 Leetcode|指针分别遍历双链表|剑指 Offer 52. 两个链表的第一个公共节点
1 拼接两个链表再乘2,使得加长两两链表路径长相同—空间复杂度O(1)O(1)O(1) class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { if (!headA || !headB) return nullptr; auto nodea = headA; auto nodeb = headB; // 当两..
2021-09-08 15:22:56 175
Jclasslib_win64bit
2018-12-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人