滞在ボタン--- 2020年3月24日

インタビューの質問17.16。マッサージ師

class Solution {
    public int massage(int[] nums) {
        if(nums.length==0) return 0;
        if(nums.length==1) return nums[0];
        int[] dp = new int[nums.length];
        dp[0] = nums[0];
        dp[1] = Math.max(nums[0],nums[1]);
        for(int i=2;i<nums.length;i++){
            dp[i] = Math.max(dp[i-1],dp[i-2]+nums[i]);
        }
        return dp[nums.length-1];
    }
}
class Solution {
    public int massage(int[] nums) {
        int a = 0,b = 0;
        for(int i = 0;i < nums.length;i++){
            int c = Math.max(b,a+nums[i]);
            a = b;
            b = c;
        }
        return b;
    }
}

57.二人の人物とsの顔の質問へ

class Solution {
    public int[] twoSum(int[] nums, int target) {
        for(int i=0;i<nums.length;i++){
            for(int j=nums.length-1;j>=0;j--){
                if(nums[i]+nums[j]==target){
                    return new int[]{nums[i],nums[j]};
                }
                if(nums[i]+nums[j]<target){
                    break;
                }
            }
        }
        return new int[]{};
    }
}
class Solution {
    public int[] twoSum(int[] nums, int target) {
        int i = 0, j = nums.length - 1;
        while(i < j) {
            int s = nums[i] + nums[j];
            if(s < target) i++;
            else if(s > target) j--;
            else return new int[] { nums[i], nums[j] };
        }
        return new int[0];
    }
}
class Solution {
    public int[] twoSum(int[] nums, int target) {
        Set<Integer> set = new HashSet<>();
        for(int num : nums){
            if(!set.contains(target - num))
                set.add(num);
            else
                return new int[]{num,target - num};
        }
        return new int[]{};
    }
}

21.偶奇の前になるように調整アレイ面の質問の順序

class Solution {
    public int[] exchange(int[] nums) {
        int i = 0,j=nums.length-1;
        while(i<j){
            if(nums[i]%2==0&&nums[j]%2==1){
                int temp = nums[i];
                nums[i++] = nums[j];
                nums[j--] = temp;
            }else if(nums[i]%2==1&&nums[j]%2==0){
                i++;
                j--;
            }else if(nums[i]%2==1&&nums[j]%2==1){
                i++;
            }else if(nums[i]%2==0&&nums[j]%2==0){
                j--;
            }
        }
        return nums;
    }
}
// nums[i] & 1  <==>  num[i] % 2 
class Solution {
    public int[] exchange(int[] nums) {
        int i = 0, j = nums.length - 1, tmp;
        while(i < j) {
            while(i < j && (nums[i] & 1) == 1) i++;
            while(i < j && (nums[j] & 1) == 0) j--;
            tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
        }
        return nums;
    }
}
class Solution {
    public int[] exchange(int[] nums) {
        int slow = 0,fast = 0;
        while(fast<nums.length){
            if((nums[fast]&1)==1) swap(nums,slow++,fast);
            fast++;
        }
        return nums;
    }

    public void swap(int[] nums,int a,int b){
        int temp = nums[a];
        nums[a] = nums[b];
        nums[b] =temp;
        return;
    }
}

より多くのあなたが知っている、より多くのあなたは知りません。
手術をせずに適切な方法は、患者はまだ手術を終了し、手術する方法はありません、求めることができます。
あなたが他の質問がある場合は、ウェルカムメッセージ、我々は、議論一緒に学び、一緒に進行することができます

公開された205元の記事 ウォンの賞賛139 ・は 20000 +を見て

おすすめ

転載: blog.csdn.net/qq_40722827/article/details/105081826