Day39 | 724. 寻找数组的中心下标、34. 在排序数组中查找元素的第一个和最后一个位置、922. 按奇偶排序数组 II、35. 搜索插入位置

724. 寻找数组的中心下标

题目链接:724. 寻找数组的中心下标 - 力扣(LeetCode)

题目难度:简单

代码:

class Solution {
    public int pivotIndex(int[] nums) {
        int sum=0;
        for(int i=0;i<nums.length;i++){
            sum+=nums[i];
        }
        int leftSum=0,rightSum=0;
        for(int i=0;i<nums.length;i++){
            leftSum+=nums[i];
            rightSum=sum-leftSum+nums[i];
            if(leftSum==rightSum)
                return i;
        }
        return -1;
    }
}

34. 在排序数组中查找元素的第一个和最后一个位置

题目链接:34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)

题目难度:中等

代码:

class Solution {
    public int binarySearch(int[] nums,int target){
        int left=0;
        int right=nums.length-1;
        while(left<=right){
            int mid=left+(right-left)/2;
            if(nums[mid]==target)
                return mid;
            else if(nums[mid]<target)
                left=mid+1;
            else 
                right=mid-1;
        }
        return -1;
    }
    public int[] searchRange(int[] nums, int target) {
        int index=binarySearch(nums,target);
        if(index==-1) return new int[]{-1,-1};
        int left=index,right=index;
        while(left-1>=0&&nums[left-1]==nums[index])
            left--;
        while(right+1<nums.length&&nums[right+1]==nums[index])
            right++;
        return new int[]{left,right};
    }
}

922. 按奇偶排序数组 II

题目链接:922. 按奇偶排序数组 II - 力扣(LeetCode)

题目难度:简单

代码:

class Solution {
    public int[] sortArrayByParityII(int[] nums) {
        int[] result=new int[nums.length];
        int even=0,odd=1;
        for(int i=0;i<nums.length;i++){
            if(nums[i]%2==0){
                result[even]=nums[i];
                even+=2;
            }else{
                result[odd]=nums[i];
                odd+=2;
            }
        }
        return result;
    }
}

35. 搜索插入位置

题目链接:35. 搜索插入位置 - 力扣(LeetCode)

题目难度:简单

代码:

class Solution {
    public int searchInsert(int[] nums, int target) {
        int n=nums.length;
        int low=0;
        int high=n-1;
        while(low<=high){
            int mid=low+(high-low)/2;
            if(nums[mid]>target){
                high=mid-1;
            }else if(nums[mid]<target){
                low=mid+1;
            }else{
                return mid;
            }
        }
        return high+1;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值