0基础力扣 DAY1

0基础力扣 DAY1

数组基础

**数组是存放在连续内存空间上的相同类型数据的集合。**C++需要注意区分vector和array。vector是顺序容器,但内存空间大小可以动态改变;而array的内存大小是固定不变的(vector底层是使用array实现的)。

数组下标从0开始,且对于C++,二维数组在空间上也是连续的(不同语言存储方式可能不同)。

704. 二分查找

经典二分查找算法,注意while循环判断以及每次二分的位置即可。

代码如下:

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int n = nums.size();
        int low = 0 , high = n - 1; //首尾指针
        int mid;
        while(low <= high){
            mid = (high + low) / 2;
            if(nums[mid] == target){
                return mid;
            }
            else if(nums[mid] > target){
                high = mid-1;
            }
            else{
                low = mid+1;
            }

            
        }
        return -1;
    }
};

27. 移除元素

经典的数组删除处理,采用双指针对数组进行遍历,遇到要删除的元素直接将其置0,移动前指针;若当前元素不需要删除,则移动后指针,将当前元素前移即可。

需要注意前指针的初始值,以及边界条件。

代码如下:

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int length = nums.size(); //数组长度
        int i = -1 , j = 0;
        if(length == 0 || val > 50)
            return length;
        while(j < nums.size()){ //遍历数组
            if(nums[j] == val){ //若要删除元素,则直接置零,指针后移
                nums[j] = 0;
                j++;
                length--;
            }
            else{   //移动后指针,覆盖当前元素
                nums[++i] = nums[j++];
            }
        }
        return length;
    }
};

总结

第一日较为基础,热热手找找写代码的感觉^^

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值