--每周分享--

一、三数之和:15. 三数之和 - 力扣(LeetCode)

public class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        List<List<Integer>> result = new ArrayList<>();
        //判断极限条件:长度不够直接返回空集合;
        if (nums == null || nums.length < 3) {
            return result;
        }
        
        // 对数组进行排序
        Arrays.sort(nums);
​
        int right = nums.length - 1;
        int mid;
        //设置left,mid,right三个指针,最外层要求left和right至少差2
        for (int left = 0; left < right - 1; left++) {
            // 跳过相同的元素,直到left跳到第一个不重复的元素
            if (left > 0 && nums[left] == nums[left - 1]) continue; 
            
            right = nums.length - 1;
            mid = left + 1;//mid始终在left后面
            
            //内层循环:要求mid==right时进入下一次外层循环(一次内循环结束)
            while (mid < right) {
                long sum = (long)(nums[left] + nums[mid] + nums[right]);
                
                if (sum == 0) {
                    result.add(Arrays.asList(nums[left], nums[mid], nums[right]));
                    
                    // 相等后再向后走一定不符合了,先让mid(mid更小)跳过相同的元素
                    while (mid < right && nums[mid] == nums[mid + 1]) mid++;
                    while (mid < right && nums[right] == nums[right - 1]) right--;
                    //上面的操作只是让mid和right移动到最后一个重复出现过的元素处
                    //mid再加一位,right再减一位,就能到达第一个不重复的元素
                    mid++;
                    right--;
                } else if (sum < 0) {
                    mid++;
                } else {
                    right--;
                }
            }
        }
        return result;
    }
}

二、github回滚操作

  1. 方法介绍:1)回退 2)回做
  2. 方法一:git reset

    原理就是:修改head的位置,即将HEAD指向的位置改变为之前存在的某个版本,head就是指向当前版本的指针

    特点:回退到历史某一版本,该版本之后的版本全部丢弃

    步骤:

    1. 使用git log查看版本号

    git log
    1. 使用“git reset --hard 目标版本号”命令将版本回退。 举例我要回退到9feb83df6db8b132004325ab03377b2088cba540这个提交的版本:

    git reset --hard 9feb83df6db8b132004325ab03377b2088cba540
    1. 回退完之后可用git log再检验当前版本。

使用“git push -f”提交更改:

git push -f

因为我们回退后的本地库HEAD指向的版本比远程库的要旧,此时如果用“git push”会报错。如下:(-f强制)

改为使用 git push -f 即可完成回退后的提交。

方法二:git revert

特点:版本回滚后,保留该版本之后的版本。适用场景:例如某需求先后进行过第一、第二、第三次版本提交之后发现第二个版本有问题,需要撤销第二个版本的操作,同时保留第三次版本的提交,可使用git revert操作。

git log
查看之前的操作历史,找到要还原的commit,例如。
git revert -n + 版本号(commit之后的一串字符)

执行命令即可恢复某次提交

注意:如果撤销的是merge操作则需要提供 -m 参数,-m选项后面应该跟着一个数字,表示要撤销的提交的父提交的索引。通常情况下,使用-m 1表示选择第一个父提交,-m 2表示选择第二个父提交,以此类推。 例如:

git revert e2fa3afa69b1021a89203c4e70d28e52c9cfd6fa -m 1

但是方法二,使用 git revert 来撤销合并提交会创建一个新的合并操作的逆操作,它可能会引入一些复杂的历史状态,所以更推荐使用第一种方法,但是第二种方法在特定情况下可以谨慎使用。

相关推荐

  1. --每周分享--

    2024-05-14 07:22:02       34 阅读
  2. py之每日spider案例分享

    2024-05-14 07:22:02       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 07:22:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 07:22:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 07:22:02       82 阅读
  4. Python语言-面向对象

    2024-05-14 07:22:02       91 阅读

热门阅读

  1. redis攻防知识汇总

    2024-05-14 07:22:02       29 阅读
  2. 【APM】在Kubernetes中,使用Helm安装Grafana 9.5.1

    2024-05-14 07:22:02       32 阅读
  3. MySQL 查询库 和 表 占用空间大小的 语句

    2024-05-14 07:22:02       30 阅读
  4. VUE基础之scoped和TodList

    2024-05-14 07:22:02       28 阅读
  5. js通过音频链接获取音频时长

    2024-05-14 07:22:02       35 阅读
  6. 记录:卡尔曼滤波推导

    2024-05-14 07:22:02       33 阅读
  7. 卸载RabbitMq

    2024-05-14 07:22:02       30 阅读