【算法方法总结·五】链表操作的一些技巧和注意事项
【算法方法总结·五】链表操作的一些技巧和注意事项 【算法方法总结·一】二分法的一些技巧和注意事项 【算法方法总结·二】双指针的一些技巧和注意事项 【算法方法总结·三】滑动窗口的一些技巧和注意事项 【算法方法总结·四】字符串操作的一些技巧和注意事项 【算法方法总结·五】链表操作的一些技巧和注意事项 🎯 【算法方法总结·六】栈队列堆的一些技巧和注意事项 【链表操作】(1)自定义链表 单链表 123456789101112public class ListNode { int val; // 结点的值 ListNode next; // 下一个结点 public ListNode() {} // 节点的构造函数(无参) public ListNode(int val) { // 节点的构造函数(有一个参数) this.val = val; } public ListNode(int val, ListNode next) { // 节点的构造函数(有两个参数)...
【算法方法总结·四】字符串操作的一些技巧和注意事项
【算法方法总结·四】字符串操作的一些技巧和注意事项 【算法方法总结·一】二分法的一些技巧和注意事项 【算法方法总结·二】双指针的一些技巧和注意事项 【算法方法总结·三】滑动窗口的一些技巧和注意事项 【算法方法总结·四】字符串操作的一些技巧和注意事项 🎯 【算法方法总结·五】链表操作的一些技巧和注意事项 【算法方法总结·六】栈队列堆的一些技巧和注意事项 【字符串操作】 此章节涉及到以下 3 个问题 (1)API (2)自定义方法 (3)字符串匹配 API关于 String 的一些常用用法 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556String str = "abca";// 1、字符串大小 length()int len = str.length(); // 4// 2、将字符串对象中的字符转换为一个字符数组 toCharArray()char[] ss =...
【算法方法总结·三】滑动窗口的一些技巧和注意事项
【算法方法总结·三】滑动窗口的一些技巧和注意事项 【算法方法总结·一】二分法的一些技巧和注意事项 【算法方法总结·二】双指针的一些技巧和注意事项 【算法方法总结·三】滑动窗口的一些技巧和注意事项 🎯 【算法方法总结·四】字符串操作的一些技巧和注意事项 【算法方法总结·五】链表操作的一些技巧和注意事项 【算法方法总结·六】栈队列堆的一些技巧和注意事项 【滑动窗口】 数组的和 随着 右边指针 移动一定是 非递减 的,就是 单调,不能包含负数 暴力解法 时间复杂度:O(n^2) 滑动窗口 时间复杂度:O(n) 数组不是单调的话,不要用 滑动窗口,考虑用 前缀和(前缀和很简单,就放此章一块讲了) 所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果,将O(n^2)的暴力解法降为O(n) 使用了双指针机制,left 和 right 指针维护窗口边界,初始均为 0,外层循环用 right 扩大窗口,内层循环用 left 缩小窗口 滑动窗口的使用条件 数组的和 随着 右边指针 移动一定是 非递减 的,就是 单调 数据连续性:需要 数组单调...
【算法方法总结·二】双指针的一些技巧和注意事项
【算法方法总结·二】双指针的一些技巧和注意事项 【算法方法总结·一】二分法的一些技巧和注意事项 【算法方法总结·二】双指针的一些技巧和注意事项 🎯 【算法方法总结·三】滑动窗口的一些技巧和注意事项 【算法方法总结·四】字符串操作的一些技巧和注意事项 【算法方法总结·五】链表操作的一些技巧和注意事项 【算法方法总结·六】栈队列堆的一些技巧和注意事项 【双指针】 暴力解法 时间复杂度: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...






