6月集訓第一天
1588. 所有奇數(shù)長度子數(shù)組的和
解題思路
使用雙重循環(huán),
在內(nèi)層循環(huán)計算數(shù)組和近弟,
當數(shù)組和為奇數(shù)數(shù)組的和時判斷條件
(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 能否連接形成數(shù)組
解題思路
外層循環(huán)數(shù)組
arr
, 滿足終止條件i
增加到arr
數(shù)組長度arr.length
先用
arr[i]
和 `pieces[j][0]比較祷愉,值相等窗宦,進入下一步循環(huán)比較arr[i] 和 pieces[j] 數(shù)組里的每個元素是否相等。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. 拆炸彈
解題思路
- k = 0
- val 值就為0 放入數(shù)組即可
- k >0
- 需要把 i 位置替換成I 后位置k個元素之和二鳄,由于是循環(huán)的赴涵,
j%n
解決數(shù)組越界問題- K < 0
- 需要把
i
位置替換成i
之前位置k個元素之和,由于是循環(huán)的订讼,(j%n+n) % n
解決數(shù)組越界問題
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. 到目標元素的最小距離
解題思路
用目標數(shù)的位置索引髓窜,和到start 的絕對位置值為條件
循環(huán)中,獲得最小的位置值欺殿。
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;
}
}