Day01

发布时间:2024年01月14日

?今日任务?

  • 数组理论
  • 704 二分查找
  • 27 移除元素

数组理论:

  1. 数组是存放在连续内存空间上的相同类型数据的集合
  2. 数组下标都是从0开始的
  3. 数组内存空间的地址是连续的
  4. 数组的元素是不能删的,只能覆盖

问题:二维数组在内存的空间地址是连续的么?

在C++中二维数组是连续分布的;

Java是没有指针的,同时也不对程序员暴露其元素的地址,寻址操作完全交给虚拟机。二维数组的每一行头结点的地址是没有规则的,更谈不上连续


704 二分查找

题目:?https://leetcode.cn/problems/binary-search/

根据?左闭右开,左闭右闭?两种区间规则?写出来的二分法

思路:前提为有序数组,根据区间规则来决定终止条件及中点 mid 的值应该如何更新


27 移除元素

题目:https://leetcode.cn/problems/remove-element/

?思路:经典的双指针问题

  1. 定义两个指针,一个快 fast,一个慢 slow
  2. 通过快指针来遍历数组,遇到 nums[fast] != target 的时候,就可以将 fast 指向的值赋给 slow 指针指向的位置,然后 fast 和 slow 都向前移动一个位置
  3. 遇到?nums[fast] == target 的时候,就是遇到要移除的元素,此时保持 fast 指针向前移动
  4. 直到快指针 fast 将数组遍历完
class Solution {
    public int removeElement(int[] nums, int val) {
        int index = 0;
        for(int num : nums) {
            if(num != val) {
                nums[index] = num;
                index++;
            }
        }
        return index;
    }
}

文章来源:https://blog.csdn.net/lin_xiangxiang/article/details/135577567
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。