当前位置:网站首页>六月刷题01——数组
六月刷题01——数组
2022-07-06 09:02:00 【追逐梦想的阿光】
今日刷题内容: 数组
前言
- 更新每天刷题的题解内容
- 注重个人理解,看难度更新题目数量
- 题目来源于力扣
- 争取每日都能做出至少一题
- 语言java、python、c\c++
一、今日题目
二、解题思路
1. 1588. 所有奇数长度子数组的和
- 要求所有奇数子序列的和
- 即从每个元素开始遍历,为奇数个元素时将当前元素和加到结果中
- 返回结果即可
class Solution {
public int sumOddLengthSubarrays(int[] arr) {
int i = 0, j, count = 0, ans = 0;
int n = arr.length;
while( i < n){
j = i;
count = 0;
while(j < n){
count += arr[j];
if ((j - i + 1) % 2 == 1){
ans += count;
}
j++;
}
i++;
}
return ans;
}
}
2. 1848. 到目标元素的最小距离
- 找到该元素所在下标,维护一个最小值即可
class Solution {
public int getMinDistance(int[] nums, int target, int start) {
int i;
int n = nums.length;
int ret = 10010;
for (i = 0; i < n; ++i){
if (nums[i] == target){
ret = Math.min(ret, Math.abs(i - start));
}
}
return ret;
}
}
3. 1652. 拆炸弹
- 根据
k
的值有三种情况,为了便于理解,直接将三种情况标明- 如果
k
为0返回全0即可- 如果
k
大于或小于0,分两种情况讨论,这里展开大于0的
- 如果
i+k
大于数组最右边下标,会回到数组起始开始算的第i + k - n
个位置- 如果小于数组最右边下标,则直接相加即可
- 小于0的情况也是一样
class Solution {
public int[] decrypt(int[] code, int k) {
int i, n = code.length;
int t = k;
int[] ret = new int[n];
if (k == 0){
return ret;
}else if (k < 0){
for (i = 0; i < n; ++i){
int temp = 0;
while(k < 0){
if (i + k < 0){
temp += code[n + i + k];
}else{
temp += code[i + k];
}
k++;
}
k = t;
ret[i] = temp;
}
}else{
for (i = 0; i < n; ++i){
int temp = 0;
while(k > 0){
if (i + k > n - 1){
temp += code[i + k - n];
}else{
temp += code[i + k];
}
k--;
}
k = t;
ret[i] = temp;
}
}
return ret;
}
}
4. 1640. 能否连接形成数组
这题有两种思路
思路一
第一种是用哈希表的方式
1, 将二维数组中所有的子集转化为字符串作为
key
存入哈希表中,默认value
为false
2. 遍历一维数组,如果当前数存在于哈希表的key
中,则将value
置为true
3. 按顺序拼接当前数字,判断是否存在于key
中,如果存在则重复步骤2
class Solution {
public boolean canFormArray(int[] arr, int[][] pieces) {
// 定义一个哈希表
HashMap<String, Boolean> map = new HashMap<>();
int i = 0, j, n = arr.length;
// 将二维数组中的所有子集转化为字符串存入哈希表中
for(int[] item: pieces){
String s = Integer.toString(item[0]);
for(int k = 1; k < item.length; k++){
s += Integer.toString(item[k]);
}
map.put(s, false); // 默认将value置为false
}
while(i < n){
String s = Integer.toString(arr[i]);
// 如果是个单子集(只有一个数字)
if (map.containsKey(s)){
map.put(s, true);
}else{
// 是多个数字的子集
for(j = i+1; j < n; j++){
s += Integer.toString(arr[j]);
if (map.containsKey(s)){
map.put(s, true);
i = j;
break;
}
}
}
i++;
}
// 遍历查看是否还有为false的值
for (Boolean b: map.values()){
if (!b) return false;
}
return true;
}
}
思路二:
- 遍历一维数组,用一个flag标识返回结果
- 从第二个数组中找相等的数,一定会按照顺序来排列
- 根据flag判断结果即可
class Solution {
public boolean canFormArray(int[] arr, int[][] pieces) {
int i = 0, j, k;
boolean flag;
while (i < arr.length){
flag = false;
for(j = 0; j < pieces.length; j++){
// 如果首位不等于arr[i]则跳过
if (pieces[j][0] != arr[i]){
continue;
}
// 首位等于arr[i]时,判断pieces[j]的子集是否和arr接下来的数对应
for(k = 0; k < pieces[j].length; k++){
if (pieces[j][k] == arr[i]){
i++;
flag = true;
}else{
return false;
}
}
// 如果此时i已经遍历完成
if (i == arr.length){
return true;
}
}
if(!flag){
return false;
}
}
return true;
}
}
边栏推荐
- 【深度学习】语义分割:论文阅读:(CVPR 2022) MPViT(CNN+Transformer):用于密集预测的多路径视觉Transformer
- Redis之持久化实操(Linux版)
- [daily question] Porter (DFS / DP)
- 解决小文件处过多
- In depth analysis and encapsulation call of requests
- 七层网络体系结构
- Redis之cluster集群
- QML control type: Popup
- Global and Chinese market of electronic tubes 2022-2028: Research Report on technology, participants, trends, market size and share
- Pytest parameterization some tips you don't know / pytest you don't know
猜你喜欢
O & M, let go of monitoring - let go of yourself
MapReduce工作机制
Advance Computer Network Review(1)——FatTree
Activiti7工作流的使用
Different data-driven code executes the same test scenario
Redis之持久化实操(Linux版)
Persistence practice of redis (Linux version)
Design and implementation of online shopping system based on Web (attached: source code paper SQL file)
Redis之Geospatial
Withdrawal of wechat applet (enterprise payment to change)
随机推荐
Parameterization of postman
Mathematical modeling 2004b question (transmission problem)
小白带你重游Spark生态圈!
五层网络体系结构
One article read, DDD landing database design practice
Redis core configuration
Mapreduce实例(六):倒排索引
Use of activiti7 workflow
Global and Chinese market of cup masks 2022-2028: Research Report on technology, participants, trends, market size and share
Redis geospatial
Solve the problem of inconsistency between database field name and entity class attribute name (resultmap result set mapping)
IDS cache preheating, avalanche, penetration
Servlet learning diary 7 -- servlet forwarding and redirection
Redis' bitmap
【shell脚本】使用菜单命令构建在集群内创建文件夹的脚本
Mapreduce实例(四):自然排序
【深度学习】语义分割-源代码汇总
Mapreduce实例(八):Map端join
The carousel component of ant design calls prev and next methods in TS (typescript) environment
Selenium+pytest automated test framework practice