leecode
秋千无闻
这个作者很懒,什么都没留下…
展开
-
Leetcode链表总结
常用技巧双指针前后指针:删除、反转快慢指针:检查环哑结点:应对头结点变化。如删除。题型总结常用技巧反转链表区间反转链表K个一组翻转回文链表删除结点删除倒数第K个结点删除有序链表中的重复元素I删除有序链表中的重复元素II链表环链表是否有环链表环入口相交链表反转链表区间反转链表K个一组翻转回文链表删除结点删除倒数第K个结点删除有序链表中的重复元素I删除有序链表中的重复元素II链表环链表是否有环链表环入口相交链表...原创 2022-05-14 23:39:42 · 138 阅读 · 0 评论 -
二分查找总结汇总
二分查找的注意点:区间选择(与哪些值比较 target/nums[right-1]/nums[mid-1])中位数(左中位数 or右中位数)旋转数组因为区间选择时要与nums[right-1]比较,所以中位数应为左中位数。区间选择:nums[right-1]中位数:左中位数right–。收缩右边界.搜索值class Solution {public: bool search(vector<int>& nums, int target) {原创 2022-05-14 22:03:47 · 247 阅读 · 0 评论 -
【leetcode】二分查找 小结
二分区间的表示左闭右开、左闭右闭二分区间的选择二分区间的选择,基于 nums[mid]的与其他值的比较信息 来决策。如与 nums[right] 比较(旋转数组)与 nums[mid+1] 比较 (寻找峰值)与 nums[mid+k] 比较 (最接近的K个元素)。类似双指针的滑动窗口中位数的选择左中位数、右中位数(寻找峰值)...原创 2022-05-12 15:54:19 · 119 阅读 · 0 评论 -
【leetcode】【二分查找】34. 在排序数组中查找元素的第一个和最后一个位置
题目描述34. 在排序数组中查找元素的第一个和最后一个位置解法左闭右开class Solution {public: int findleft(vector<int>& nums, int target) { int n = nums.size(); int left = 0, right=n; while(left<right) { int mid = left + (right-left)原创 2022-05-12 11:46:53 · 96 阅读 · 0 评论 -
【leetcode】【二分查找】162. 寻找峰值
题目描述162. 寻找峰值解题思路解法1:nums[mid] ?= nums[mid+1]在左闭右闭写法中。采用如下的二分区间选择算法。nums[mid] > nums[mid+1] one peek must be in [left, mid]nums[mid] < nums[mid+1] one peek must be in (mid, right]解法2:nums[mid] ?= nums[right]左闭右闭。采用如下的二分区间选择算法。nums[mid] &原创 2022-05-12 11:41:57 · 2644 阅读 · 0 评论 -
153. 寻找旋转排序数组中的最小值
题目描述153. 寻找旋转排序数组中的最小值二分查找的两种思路题目描述解题思路左闭右开左闭右闭解题思路需要注意的是mid始终有可能是最小值。我们在二分过程中,不能排除 Mid是最小值的可能性。左闭右开class Solution {public: int minNumberInRotateArray(vector<int> rotateArray) { vector<int>& nums = rotateArray; in原创 2022-05-11 21:47:34 · 127 阅读 · 0 评论 -
Leecode 160 相交链表 - 【巧解】 - 转换为 环入口 求解问题
将A链表尾与B链表头连接起来。若两链表相交,则存在环,且交点为环入口,则该题转化为 "环入口求解问题"(Leecode 142)。class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode* tailA = headA; while(tailA->next) tailA = tailA->next;原创 2021-03-18 01:18:25 · 126 阅读 · 0 评论 -
leecode 5 最长回文子串【递归解法】
动态规划,本质上就是 带备忘录的递归的计算过程。递归过程为 自顶向下的问题拆解和自底向上的问题计算。迭代形式的动态规划,略过问题拆解,直接计算,能节省一定的时空。本题中,因递归法的时空效率太差(击败5%),需进一步优化(改为迭代形式)。分析过程:递归过程(暴力递归穷举 + 备忘录优化) 构造递归遍历(二叉树遍历框架)。构造递归,就是发现最优子结构的过程。对于最长回文子串,我们在构造递归时,关注怎么遍历所有子串。然后再判断子串性质。最后再择优。 画递归树,发现重叠子问题。 构造备忘录,消原创 2021-02-28 18:36:28 · 738 阅读 · 0 评论