代码随想录算法训练营第一天 | 704 二分查找、27 移除元素

题外话

研究生三年都在用python做深度学习,也没有做出什么像样的成果,反而把吃饭的本领都丢掉了。
总是害怕来不及了来不及了是没用的,都说种一棵树最好的时候是十年前和现在,那就忘记害怕,立刻开始!
太久没写c++,一度不知道要怎么用c++刷Leetcode,重开这个本科时创建的博客,记录一下。
算法题刷的少,这是第一次刷代码随想录,计划使用c++和python两种语言都做一遍。

数组理论

数组:存放在连续内存空间中相同类型数据的集合

  • 正是因为数组的在内存空间的地址是连续的,所以在删除或者增添元素的时候,就难免要移动其他元素的地址。
  • 数组的元素是不能删的,只能覆盖

对于二维数组:

  • c++中二维数组在地址空间上是连续的
  • Java中二维数组可能每行在地址空间上是连续的,但每一列之间并不连续

704 二分查找

题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

使用二分查找的前提是数组有序,我第一次做题时没注意到有序,直接遍历了一遍,要注意审题。

C++版本

class Solution {
   
public:
    int search(vector<int>& nums, int target) {
   
        int len = nums.size();
        int left = 0, right= len - 1;
        while (left <= right) {
    // 左闭右闭区间
            // int middle = ( left + right ) / 2;
            int middle = left + ( right - left ) / 2;  // 防止内存溢出
            if (nums[middle] > target) {
   
                right = middle - 1;
            }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值