【算法方法总结·二】双指针的一些技巧和注意事项
【算法方法总结·二】双指针的一些技巧和注意事项 【算法方法总结·一】二分法的一些技巧和注意事项 【算法方法总结·二】双指针的一些技巧和注意事项 🎯 【算法方法总结·三】滑动窗口的一些技巧和注意事项 【算法方法总结·四】字符串操作的一些技巧和注意事项 【算法方法总结·五】链表操作的一些技巧和注意事项 【算法方法总结·六】栈队列堆的一些技巧和注意事项 【双指针】 暴力解法 时间复杂度:O(n^2) 双指针 时间复杂度:O(n) 双指针法(快慢指针法): 通过一个 快指针 和 慢指针 在一个for循环下完成两个for循环的工作 两种写法(1)快慢指针法:初始化为 slow = fast = 0 通过两个指针以 不同速度(通常是快指针移动两步、慢指针移动一步)遍历数据结构 适用于涉及链表、循环结构、滑动窗口或需要定位特点位置的情况 原地修改数组(如去重),快慢指针 更高效 (2)相向双指针法:初始化为 left = 0, right = nums.length - 1 从数据结构的...
【算法方法总结·一】二分法的一些技巧和注意事项
【算法方法总结·一】二分法的一些技巧和注意事项 【算法方法总结·一】二分法的一些技巧和注意事项 🎯 【算法方法总结·二】双指针的一些技巧和注意事项 【算法方法总结·三】滑动窗口的一些技巧和注意事项 【算法方法总结·四】字符串操作的一些技巧和注意事项 【算法方法总结·五】链表操作的一些技巧和注意事项 【算法方法总结·六】栈队列堆的一些技巧和注意事项 【二分法】 对于有些题目 暴力解法 时间复杂度为O(n) 而 二分查找 的时间复杂度为O(logn) 这便是 二分法 的 优势 所在 两种写法左闭右闭 [left,right] 精确查找、需包含右边界 其中left == right是 有意义 的,所以 while(left <= right) 更新时,left 更新为 mid + 1,right 更新为 mid - 1 所以 初始化 时,一般为 left = 0,right = n - 1 左闭右开 [left,right) 插入位置、避免越界 其中left == right是 没有意义 的,所以 while(left < right) 更新时,left...
git 版本回退操作
git - 版本回退已经提交,没有 push12345-- 撤销 commitgit reset --soft-- 撤销 commit 和 add 两个动作git reset --mixed 已经提交,并且 push12345-- 撤销并舍弃版本号之后的提交记录(谨慎使用)git reset --hard-- 撤销,但保留提交记录git revert 实际操作(1)撤销 commit 复制版本号:IDEA操作/ git log 然后,git reset --soft 要去到的版本号 (2)撤销 commit 和 add 两个动作 如果在当前版本有新建文件的操作,git reset --mixed 要去到的版本号会把新建的文件移出工作区 (3)撤销并舍弃版本号之后的提交记录(谨慎使用) 复制要去到的版本号 被拒绝推送,因为本地分支版本 << 远程分支 如果想推送,只能强制推送 git push -f (4)撤销,但保留提交记录 复制要移除的版本号 git revert...
git - rebase 和 merge
git - rebase 和 mergemerge 创建 feature1 分支: git checkout -b feature1 当在自己的分支feature1上开发到1/2时,被派去前一个分支dev完成开发任务,完成后再回来当前分支feature1,完全开发完成后,切回dev分支,合并分支 git merge feature1,合并分支 因为改的都是一个文件,所以有冲突,手动处理冲突后,提交一下 rebase(不能在公共分支上 rebase) git rebase dev 后(注意: 在feature2上rebase) 再 merge 合并(注意:在dev上merge) 将feature2删除后