数组双指针

力扣26 快慢指针 去掉重复元素 数组

 public int removeDuplicates(int[] nums) {
        int slow = 0;
        int fast = 1;
        int count = 0;
        if (nums.length == 1) {
            return 1;
        } else {
            while (fast < nums.length) {
                if (nums[slow] == nums[fast]) {
                    // 若相等 则 fast向前走 slow不动
                    fast++;
                }
                else{
                    //  若不相等 则 slow后一位设置为fast位置的元素 fast向后走
                    slow++;
                    nums[slow] = nums[fast];
                    fast++;
                }
            }
        }
        return slow+1;
    }

力扣83 快慢指针向后遍历 去掉重复元素(链表)

 public ListNode deleteDuplicates(ListNode head) {
        if(head==null || head.next==null){
            return head;
        }
        else{
            // head 不为空 同时 head.next 不为空
            ListNode slow = head;
            ListNode fast = head.next;

            while(fast != null){
                if(slow.val == fast.val){
                    slow.next = fast.next;
                    fast = fast.next;
                }
                else{
                    slow = fast;
                    fast = fast.next;
                }
            }
            return head;
        }
    }

力扣 27 快慢指针向后遍历 去掉val元素

public int removeElement(int[] nums, int val) {
        int fast = 0, slow = 0;
        //如果 fast 遇到值为 val 的元素,则直接跳过,
        //否则就赋值给 slow 指针,并让 slow 前进一步。
        while (fast < nums.length) {
            if (nums[fast] != val) {
                nums[slow] = nums[fast];
                slow++;
            }
            fast++;
        }
        // 前面slow++ 所以返回slow
        return slow;
    }

力扣283 快慢指针向后遍历 除零

public void moveZeroes(int[] nums) {
        int length = nums.length;

        int slow = 0, fast = 0;
        while(fast < length){
            if(nums[fast] == 0){
                // fast == 0 则跳过 fast向前进
                fast++;
            }
            else{
                // fast不为0 则 将fast当前的值送到左侧,slow和fast都向前走一步
                nums[slow] = nums[fast];
                slow++;
                fast++;
            }
        }
        for(int i=slow;i<length;i++){
            // 剩余部分赋零
            nums[i] = 0;
        }
    }

力扣 344 左右向中间简单交换

 public void reverseString(char[] s) {

        for (int i = 0; i < s.length / 2; i++) {
            char temp = s[i];
            s[i] = s[s.length - 1 - i];
            s[s.length - 1 - i] = temp;
        }

    }

力扣1 HashMap

public int[] twoSum(int[] nums, int target) {
        HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
        for(int i=0;i<nums.length;i++){
            int need = target - nums[i];
            if(map.containsKey(need)){
                return new int[]{i,map.get(need)};
            }
            else{
                map.put(nums[i],i);
            }
        }
        return new int[]{};
    }

相关推荐

  1. 数组划分,指针

    2024-04-21 07:24:02       44 阅读
  2. 数组指针

    2024-04-21 07:24:02       31 阅读
  3. LeetCode指针:有序数组中的单一元素

    2024-04-21 07:24:02       64 阅读
  4. LeetCode | 数组 | 指针法 | 27. 移除元素【C++】

    2024-04-21 07:24:02       36 阅读

最近更新

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

    2024-04-21 07:24:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 07:24:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 07:24:02       82 阅读
  4. Python语言-面向对象

    2024-04-21 07:24:02       91 阅读

热门阅读

  1. MySQL 中的数据文件配置文件

    2024-04-21 07:24:02       36 阅读
  2. Few-Shot, Zero-Shot & One-shot

    2024-04-21 07:24:02       34 阅读
  3. 腾讯云免费ssl证书申请与宝塔手动部署

    2024-04-21 07:24:02       34 阅读
  4. 【Python基础】Lambda匿名函数

    2024-04-21 07:24:02       34 阅读
  5. 开发语言漫谈-React

    2024-04-21 07:24:02       34 阅读
  6. 常用数据结构及设计

    2024-04-21 07:24:02       31 阅读
  7. 开发语言漫谈-脚本语言

    2024-04-21 07:24:02       32 阅读