day 1 LeetCode刷题日志

这篇具有很好参考价值的文章主要介绍了day 1 LeetCode刷题日志。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天的内容是 704 和 27 ovo

704. 二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target

写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1

Myself C:

//左闭右闭 [0,1,2,3]
int search(int* nums, int numsSize, int target) {
    int left = 0,right = numsSize - 1;
    while(left <= right) //wrong 1 : 因为是左闭右闭 故这里必须是 <= 
    {
        int mid = (left + right) / 2;
        if(target == nums[mid]) return mid;
        if(target > nums[mid])
            left = mid + 1;
        else
            right = mid - 1;    
    }
    return -1;
}

Myself C++:

//左闭右闭 [0,1,2,3]
int search(vector<int>& nums, int target)
{
    int left = 0,right = nums.size() - 1;
    while(left <= right)
    {
        int mid = left + (right - left) / 2; //防止溢出
        if(target == nums[mid]) return mid;
        if(target < nums[mid]) right = mid - 1;
        else left = mid + 1;
    }   
    return -1;
}

Carl C++:

//左闭右开 [0,1,2,3)
int search(vector<int>& nums, int target)
{
    //left是查找列表的第一个 right是查找列表最后一个的下一个
    int left = 0 , right = nums.size();
    while(left < right)
    {
        int mid = (left + right) / 2;
        if(target == nums[mid]) return mid;
        if(target > nums[mid]) left = mid + 1;
        else right = mid;
    }
    return -1;
}

Myself Sum:

  1. NOTICE 左闭右闭 左闭右开

  2. C语言的int类型最大是10^9

  3. C++的vector

    C语言可以用int arr[]定义数组 , 缺点是定长数组

    C++里面有动态数组vector,可以理解为不定长数组,在C++中叫做容器

    vector定义后能将所有的值初始化为0!

    #include<iostream>
    #include<vector>//使用vector 需要引入头文件
    using namespace std;
    
    int main()
    {
        vector<int> v;//定义一个 vector v 初始不定义大小
        cout << v.size();//未配大小,此时为 0
        v.resize(8);//将长度resize为 8
    
        vector<int> v1(10);//定义一个vector v1 长度为 10 
    
        vector<int> v3(100,9);//将长度为100的数组中所有值初始化为9
    
        //使用迭代器访问 vector
        //c.begin()是一个指针,指向容器的第一个元素
        //c.end()也是一个指针,指向容器的最后一个元素的后一个位置
        for(auto it = v.begin(); it != v.end(); it++)
        {
            cout << *it << " ";
        }
        return 0;
    }
    

27. 移除元素

给你一个数组 nums 和一个值 val

你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素

Myself C++:

//呃...我的双循环没写出来..数组不是越界了就是时间超时了
//然后我就想用这个暴力覆盖...听了Carl讲解原来这个是快慢指针...
//虽然我感觉挺暴力的...但是好吧...叫快慢指针确实更有说服力一些
//思路:循环找到不是val的值去从头覆盖数组 最后resize数组
// 时间复杂度:O(n)
// 空间复杂度:O(1)
int removeElement(vector<int>& nums, int val)
{
	int index = 0;
    for(int i = 0; i < nums.size(); i++)
    {
        if(nums[i] != val) nums[index++] = nums[i];    
    }
    nums.resize(index);
    return nums.size();
}

Carl C++:

// 时间复杂度:O(n^2)
// 空间复杂度:O(1)
int removeElement(vector<int>& nums, int val) 
{
    int size = nums.size();
    for (int i = 0; i < size; i++) 
    {
        if (nums[i] == val) 
        { 
            for (int j = i + 1; j < size; j++) 
                nums[j - 1] = nums[j];
            i--; 
            size--; 
            }
        }
        return size;
  }

day 1 LeetCode刷题日志文章来源地址https://www.toymoban.com/news/detail-779433.html

到了这里,关于day 1 LeetCode刷题日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • day 1 LeetCode刷题日志

    今天的内容是 704 和 27 ovo 704. 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target ,如果目标值存在返回下标,否则返回 -1 Myself C: Myself C++: Carl C++: Myself Sum: NOTICE 左闭右闭 左闭右开 C语言的int类型最大是10^9 C++的

    2024年02月03日
    浏览(29)
  • 看完这篇文章你就彻底懂啦{保姆级讲解}-----(LeetCode刷题704、35、34数组二分查找) 2023.4.17

    本文章一部分内容参考于《代码随想录》----如有侵权请联系作者删除即可,撰写本文章主要目的在于记录自己学习体会并分享给大家,全篇并不仅仅是复制粘贴,更多的是加入了自己的思考,希望读完此篇文章能真正帮助到您!!! 数组是由n(n=1)个 相同类型 的数据元素

    2024年02月05日
    浏览(37)
  • LeedCode刷题---二分查找类问题

    顾得泉: 个人主页 个人专栏: 《Linux操作系统》  《C/C++》  《LeedCode刷题》 键盘敲烂,年薪百万! 题目链接: 二分查找        给定一个  n  个元素有序的(升序)整型数组  nums  和一个目标值  target   ,写一个函数搜索  nums  中的  target ,如果目标值存在返回

    2024年02月04日
    浏览(30)
  • 【算法刷题】—7.12二分查找应用,数组处理

    🧛‍♂️ 个人主页: 杯咖啡 💡进步是今天的活动,明天的保证! ✨目前正在学习:SSM框架,算法刷题 🙌 牛客网 ,刷算法过面试的神级网站, 用牛客你也牛。 👉免费注册和我一起学习刷题👈 🐳希望大家多多支持🥰一起进步呀! 😎Love is the one thing we’are capable of perc

    2023年04月08日
    浏览(57)
  • leetcode 二分查找小结

    原始思路: 但是,挪一挪的步骤最差的时候时间复杂度也能达到O(n),所以另一种避免这种情况的思路是我们分别使用二分查找去寻找区间的最左和最右。 上面的寻找target的代码(while …)无法精确地找到最左,因此我们需要对其进行一些改写。关键是要在找到一个值的时候不

    2024年02月08日
    浏览(43)
  • # - LeetCode 704-二分查找 |LeetCode 27-移除元素

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

    2024年02月16日
    浏览(42)
  • 每日一题(LeetCode)----二分查找(一)

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 示例 2: 示例 3: 提示: 1 = nums.length = 104 -104 = nums[i] = 104 nums 为 无重复元素 的 升序 排列数

    2024年02月08日
    浏览(41)
  • Leetcode刷题笔记——二分法

    二分法是搜索算法中极其典型的方法,其要求输入序列有序并可随机访问。算法思想为 输入:有序数组nums,目的数值target 要求输出:如果target存在在数组中,则输出其index,否则输出-1 将原数组通过[left,right]两个索引划分范围,初值left=0,right=数组的最后一个元素 当left = r

    2024年02月10日
    浏览(32)
  • Leetcode 704.二分查找、27.移除元素

    暴力循环: 自己的思路 从左往右,遍历每个元素。 检查当前元素是否满足要求。 若满足要求则返回当前元素的下标。 时间复杂度:O(n); 空间复杂度:O(n); 二分查找: 题目给定的是一个升序的数组,即有序数组! 那么二分的前提是有序(或者具有某种特殊的性质!)。

    2024年02月17日
    浏览(40)
  • 代码随想录算法练习Day1:二分查找

    题目链接:704. 二分查找 卡哥视频讲解:手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找 二分法概述: 二分法(Binary Search)是一种在有序数组或列表中查找目标元素的算法。 二分法使用前提 : 有序数组或列表 :二分法要求在查找的数据结

    2024年04月23日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包