代码随想录训练营day1--数组 leetcode27&704

27

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

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

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

class Solution {

    public int removeElement(int[] nums, int val) {

    int length=nums.length;

    for(int i=0;i<length;i++){

        if(nums[i]==val){

            for(int m=i+1;m<length;m++){

                nums[m-1]=nums[m];

            }

            length--;

            i--;

        }

    }

return length;

}}

此题较为简单,了解数组的基本操作即可

704 二分查找

题目描述:

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

代码实现:

class Solution{public static int search(int[] nums, int target) {

    int left = 0;

    int right = nums.length - 1;

    while (left <= right) {

        int mid=(right-left)/2+left;

        if(nums[mid]>target){

            right=mid-1;

        }

        else if(nums[mid]<target){

            left=mid+1;

        }

        else{

            return mid;

        }

    }

    return -1;

}}

看了解答后,才发现之前自己的二分查找存在许多漏洞,比如边界值的选择,以及自己在实现二分查找的时候实际上只是暴力解法,不容易想明白而且算法较为复杂。在解答中初次了解到了双指针法。

//关于此题引申出来两个之前不清楚的知识点,一是if和else和else if
//对于上面有三个分支语句的情况,如果是if,if,else的情况,若1满足,2不满足,3满足,那么if和else都会执行。else的含义是,上一个if若不满足则直接执行括号内语句
//如果是if,else if,else的情况,那么第三个else只有在12都不满足的情况下才会执行。其中else if的含义是,如果1不满足,且else if后加条件成立则执行括号内语句

//二是当函数中的参数是一个数组变量时,应该如何传入参数
// 例如:函数是search(int[] nums, int target)
//那么传入的方法就是 1.首先定义这个数组int[] array=new int[]{-1,0,3,5,9,12};
//    search(array,2);需要注意的是,这个数组的名字不需要和形式参数中数组的名字一样,而是自己定义,最终在形式参数的地方写上该数组的名字就可以了。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值