首页 > 编程语言 >代码随想录算法训练营Day1

代码随想录算法训练营Day1

时间:2024-09-11 15:24:48浏览次数:3  
标签:leftindex nums int 训练营 随想录 Day1 索引 rightindex 左闭

目录

704. 二分查找 

27. 移除元素

977.有序数组的平方 


704. 二分查找 

分类:

左闭右闭、左闭右开

Tips:

1.循环条件:

左闭右闭:左索引<=右索引

左闭右开:左索引<右索引

2.循环操作:

处理元素>目标值:

左闭右闭:右索引=折半索引-1

左闭右开:右索引=折半索引

class Solution {
    public int search(int[] nums, int target) {
        int n=nums.length;
        int leftindex=0;
        int rightindex=n-1;
     while(leftindex<=rightindex){
        int midindex=(leftindex+rightindex)/2;
      if(nums[midindex]==target){
        return midindex;
      } else if(nums[midindex]<target){
        leftindex=midindex+1;
      }else{
        rightindex=midindex-1;
      }
     }
     return -1;



    }
}

27. 移除元素

Tips:

双指针:

左索引——>被赋值元素

右索引——>当前处理元素

class Solution {
    public int removeElement(int[] nums, int val) {
        int n=nums.length;
        int leftindex=0;
        for(int rightindex=0;rightindex<n;rightindex++){
            if(nums[rightindex]!=val){
                nums[leftindex]=nums[rightindex];
                leftindex++;
            }
        }
        return leftindex;


    }
}

977.有序数组的平方 

Tips:

循环条件:

左索引<=右索引

双指针(利用数组从两端到中间有序的特点)

class Solution {
    public int[] sortedSquares(int[] nums) {
        int n=nums.length;
        int leftindex=0;
        int rightindex=n-1;
        int [] newnums=new int[n];
        int assignindex=n-1;
        while(leftindex<=rightindex){
            if(nums[leftindex]*nums[leftindex]>nums[rightindex]*nums[rightindex]){
                newnums[assignindex]=nums[leftindex]*nums[leftindex];
                leftindex++;
                assignindex--;
            }else{
                newnums[assignindex]=nums[rightindex]*nums[rightindex];
                rightindex--;
                assignindex--;

            }
        }
    return newnums;
    }
}


 

标签:leftindex,nums,int,训练营,随想录,Day1,索引,rightindex,左闭
From: https://blog.csdn.net/lynyzy/article/details/142133345

相关文章

  • JavaWeb【day12】--(SpringBootWeb登录认证)
    案例-登录认证在前面的课程中,我们已经实现了部门管理、员工管理的基本功能,但是大家会发现,我们并没有登录,就直接访问到了Tlias智能学习辅助系统的后台。这是不安全的,所以我们今天的主题就是登录认证。最终我们要实现的效果就是用户必须登录之后,才可以访问后台系统中的功能。......
  • JavaWeb【day15】--(Maven高级)
    Maven高级Web开发讲解完毕之后,我们再来学习Maven高级。其实在前面的课程当中,我们已经学习了Maven。我们讲到Maven是一款构建和管理Java项目的工具。经过前面10多天web开发的学习,相信大家对于Maven这款工具的基本使用应该没什么问题了。我们掌握了Maven工具的基本......
  • day10-配置文件&日志&多线程
    一、配置文件1.1properties配置文件properties配置文件特点:1、都只能是键值对2、键不能重复3、文件后缀一般是.properties结尾的​Properties这是一个Map集合(键值对集合),但是我们一般不会当集合使用主要用来代表属性文件,通过Properties可以读写属性文件里的......
  • 代码随想录训练营day41|121. 买卖股票的最佳时机,122.买卖股票的最佳时机II,123.买卖股
    121.买卖股票的最佳时机这题和贪心中的买股票很想,但这里不用考虑局部问题,因为只用买一张卖一张。我想可以用一个数组dp来记录买入价格和卖出价格。然后遍历数组草我感觉我写的想贪心。动态规划dp[i][0]表示第i天不持股的最大收益,dp[i][1]表示第i天持股的最大收益。dp......
  • 【代码随想录Day13】二叉树Part01
    理论基础文章讲解:代码随想录二叉树节点的定义:publicclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(){}TreeNode(intval){this.val=val;}TreeNode(intval,TreeNodeleft,TreeNoderight){this.val......
  • 代码随想录算法 - 二叉树
    题目1226.翻转二叉树给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例2:输入:root=[2,1,3]输出:[2,3,1]示例3:输入:root=[]输出:[]提示:树中节点数目范围在[0,100]内-100<=Node.val......
  • 代码随想录day 56 || 图论6
    Prim算法应用场景是主要是找到一个无向连通图的最小生成树,即连接所有节点且权重总和最小的树//prim三部曲//1,找到距离当前最小树最近节点//2,节点入树//3,更新mindist//更新树funcupdateMinDist(edges[][]int,nodeint){ for_,edge:=rangeedges{ ifed......
  • 代码随想录训练营第28天|利润分解
    122.买卖股票的最佳时机IIclassSolution{public:intmaxProfit(vector<int>&prices){intsum=0,day_profit;for(inti=1;i<prices.size();i++){day_profit=prices[i]-prices[i-1];if(day_profit>0)......
  • Day11 二叉树 part01| LeetCode
    理论基础二叉树的种类满二叉树完全二叉树二叉搜索树平衡二叉搜索树存储方式:数组、链式二叉树的遍历方式深度优先遍历前序(递归法、迭代法)中序(递归法、迭代法)后序(递归法、迭代法)广度优先遍历层序(迭代法)二叉树的定义publicclassTreeNode{......
  • mini-lsm通关笔记Week2Day1
    项目地址:https://github.com/skyzh/mini-lsm个人实现地址:https://gitee.com/cnyuyang/mini-lsmSummary在本章中,您将:要将测试用例复制到启动器代码中并运行它们,实现合并某些SST文件并生成新SST文件的compaction逻辑。实现逻辑以更新LSM状态并管理文件系统上的SST文件。......