首页 > 其他分享 >[代码随想录] 第一天

[代码随想录] 第一天

时间:2024-01-10 16:36:14浏览次数:26  
标签:slow 第一天 nums int 代码 随想录 middle length quick

704.二分查找 [https://leetcode.cn/problems/binary-search/description/]
思路: 二分查找适用于在有序数组中查找目标值,左边边界为left,右边边界为right,每次使用middle=(right+left)/2,将原数组划分为[left,middle]和[middle,right]两个数组,若middle <target,则目标值落在右边数组,否则落在左边数组,直到right<left时,退出循环,结束划分。若nums[middle]==target,返回middle,否则返回-1,数组无target值。

class Solution {
    public int search(int[] nums, int target) {
        int left = 0;
        int right = nums.length-1;
        int middle = 0;
        while(left<=right){
            middle = (left+right)/2;
            if(nums[middle] == target){
                return middle;
            }else if(nums[middle]>target){
                right = middle -1 ;
            }else
                left = middle +1 ;
        }
        if(nums[middle] == target){
        	return middle;}
        return -1;
    }
}

--------------------------------------------------------------------------------------------------------
27.移除元素[https://leetcode.cn/problems/remove-element/]
思路: 数组在内存中申请一段连续的内存地址,所以不能删除元素,只能覆盖元素
本能想到暴力解,是用第一层循环使用i寻找与target相等的元素,第二层用于从i开始,使用j将后续所有元素向前挪动一位。
时间复杂度:O(n^2)

class Solution {
    public int removeElement(int[] nums, int val) {
        int length = nums.length;
        for(int i = 0;i<length;i++){
            if(nums[i] == val){
                 length--;
                for(int j =i;j<length;j++){
                    nums[j]=nums[j+1]; 
                }
                i--;
            }
        }
        return length;
    }
}

进阶思路:使用快慢指针,快指针quick用于向前判定元素值,慢指针slow用于停留在第一个要移除target值,length用于保存数组长度,双指针默认自增,若quick指向target值,length自减,slow--以抵消自增,保持静止,若quick指向非target值(此时quick指向第一个非target值),使用此值覆盖原slow值,继续循环。
时间复杂度:O(n)

class Solution {
    public int removeElement(int[] nums, int val) {
        int length = nums.length;
        int quick = 0;
        int slow = 0;
        for (; quick < nums.length; slow++, quick++) {
            if (nums[quick] == val) {
                slow--;
                length--;
            } else {
                nums[slow] = nums[quick];
            }
        }
        return length;
    }
}

这是我的第一篇博客,也是算法的第一篇打卡,希望自己能够努力坚持下去吗

标签:slow,第一天,nums,int,代码,随想录,middle,length,quick
From: https://www.cnblogs.com/cssg/p/17956776

相关文章

  • 一段神奇的代码
    importtimeimportosimportpsutilimportntplibfromdatetimeimportdatetimedefget_network_time():ntp_client=ntplib.NTPClient()response=ntp_client.request('pool.ntp.org')returndatetime.fromtimestamp(response.tx_time)d......
  • 尊嘟假嘟?三行代码提升接口性能600倍
    一、背景  业务在群里反馈编辑结算单时有些账单明细查不出来,但是新建结算单可以,我第一反应是去测试环境试试有没有该问题,结果发现没任何问题!!!  然后我登录生产环境编辑业务反馈有问题的结算单,发现查询接口直接504网关超时了,此时心里已经猜到是代码性能问题导致的,接来下就把重......
  • day13 代码随想录算法训练营 递归遍历
    题目:144.二叉树的前序遍历145.二叉树的后序遍历94.二叉树的中序遍历我的感悟:用helper内部函数写更好理解难点: 代码难点:代码示例:前序#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#......
  • 代码整洁之道
    命名1、见名知意 变量命名应知道这个变量作用函数2、函数参数:标识参数:boolean;应拆分两个函数:一个函数应只做一件事3、函数不返回null及参数不传递null4、永不被调用的函数应该被舍弃。别害怕删除死函数,git还会记得5、尽可能找到并消除重复代码:重复的代码可能成为子程序或一个类......
  • 零代码集成自动化的实现逻辑是什么?
    零代码的概念是什么?零代码平台是一种软件开发工具或平台,非技术人员能够创建和部署应用程序,而无需编写任何代码。它提供了可视化的界面和拖拽式的操作,使用户能够通过简单的配置和组合,以图形化的方式构建应用程序。这种平台通常包含了丰富的预定义组件、模板和工具,用户可以根据自己的......
  • 使用CompletableFuture提升代码执行效率示例
    代码示例/***全国/区域数据统计:*1.新能源规模*2.电网容量*3.输配线路*4.变电站*5.工作场站**@paramareaarea*@paramuseruser*@returntheobject*@since3.0.0*/publicSt......
  • 博客趣个人静态网页模板代码
    这是一款适用于博客、新闻、公司、图片、小说、文档、商城、资源下载、网址导航等多种类型网站的博客趣网页模板。模板具有最小和清洁的设计,易于使用,并具有有趣的功能。bokequ主题简约干净的设计、在明暗风格之间进行现场切换。1、主页html代码<!doctypehtml><html><hea......
  • 代码混淆:保护您的应用程序
    引言在当今数字化时代,移动应用程序已经成为人们生活和工作中不可或缺的一部分。但是,随着应用程序数量的增加和黑客攻击手段的不断升级,应用程序的安全性也越来越受到重视。代码混淆是一种可以保护您的应用程序安全的有效手段。本文将介绍代码混淆的定义、常见手段、作用、可能带来......
  • vscode设置vue3代码格式化
    下载插件可以使用Volar或Prettier  设置格式化时选用的插件mac:【shift】+【option】+【f】win:【shift】+【alt】+【f】 选择其中之一左下角选择【设置】 点击右上角的文件切换图标,可以切换到setting.json 实际使用假设这是默认代码状态 使用Prettier默认......
  • AI与低代码解锁无限可能
    前言近年来,人工智能(AI)和低代码开发技术逐渐成为数字化转型的重要推动力。AI作为一项具有革命性潜力的技术,正在改变我们生活的方方面面。而低代码开发则提供了一种快速构建应用程序的方法,使得开发者无需深入编写大量繁琐的代码。这两种技术的结合,正为企业、开发者和用户带来前所未......