6月集训第一天

6月集训第一天

1588. 所有奇数长度子数组的和

解题思路

使用双重循环,

在内层循环计算数组和,

当数组和为奇数数组的和时判断条件(j-i+1)%2==1

累加计入ret 中。

Java源码

class Solution {
    public int sumOddLengthSubarrays(int[] arr) {
        int i,j;
        int ret = 0;
        for(i = 0; i < arr.length; ++i){
            int sum = 0;
            for(j = i; j < arr.length; ++j){
                sum += arr[j];
                if((j-i+1)%2==1){
                    ret +=sum;
                }
            }
        }
        return ret;
    }
}

1604 能否连接形成数组

解题思路

  1. 外层循环数组 arr, 满足终止条件 i 增加到arr 数组长度arr.length

  2. 先用arr[i] 和 `pieces[j][0]比较,值相等,进入下一步循环

  3. 比较arr[i] 和 pieces[j] 数组里的每个元素是否相等。flag 做标记

Java 源码

class Solution {
    public boolean canFormArray(int[] arr, int[][] pieces) {
        int i = 0,j,k;
        boolean flag = false;
        while( i<arr.length){
            flag = false;
            for(j = 0; j < pieces.length;j++){

                if(pieces[j][0] != arr[i]){
                    continue;
                }

                for(k = 0; k<pieces[j].length ; ++k){
                    if(pieces[j][k] != arr[i]){
                        return false;

                    }else{
                        ++i;
                        flag = true;
                    }
                }
                if (i==arr.length){
                    return true;
                }
            }
            if(!flag){
                return false;
            }

        }
        return true;
    }

}

1652. 拆炸弹

解题思路

  1. k = 0
    1. val 值就为0 放入数组即可
  2. k >0
    1. 需要把 i 位置替换成I 后位置k个元素之和,由于是循环的,j%n 解决数组越界问题
  3. K < 0
    1. 需要把 i 位置替换成i之前位置k个元素之和,由于是循环的,(j%n+n) % n 解决数组越界问题

Java 源码

class Solution {
        public int[] decrypt(int[] code, int k) {
            int n = code.length;
            int[] ret = new int[n];
            int i,j,val;

            for(i = 0; i< n; ++i){
                val = 0;
                if( k > 0){
                    for(j = i+1; j <= i+k; ++j){
                        val += code[ j%n];
                    }
                }else if(k <0){
                    for(j = i-1; j>=i+k; --j){
                        val += code[(j%n+n) % n];
                    }
                }
                ret[i] = val;
            }
            return ret;
        }
    }

1848. 到目标元素的最小距离

解题思路

用目标数的位置索引,和到start 的绝对位置值为条件

循环中,获得最小的位置值。

java 源码

class Solution {
    public int getMinDistance(int[] nums, int target, int start) {
        int i;
        int Min = 100000;

        for( i = 0; i < nums.length; ++i){
            if(nums[i] == target && Math.abs(i-start) < Min){
                Min = Math.abs( i-start);
            }
        }
        return Min;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 力扣198.打家劫舍 题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约...
    独相随阅读 319评论 0 0
  • 九日集训第五天 题目 https://articles.zsxq.com/id_hwtn8ivz2ob4.html...
    Daniel_68ba阅读 147评论 0 0
  • 1. 移动零[https://leetcode.cn/problems/move-zeroes/] 给定一个数组 ...
    TAsama阅读 137评论 0 0
  • 第一题:两数相加[https://leetcode-cn.com/problems/add-two-numbers...
    糖糖超可爱阅读 384评论 0 3
  • 1. 数组 1.1 删除 题解题思路26. 删除排序数组中的重复项[https://leetcode-cn.com...
    王龙江_3c83阅读 296评论 0 0