KamaCoder(二)

news/2024/11/29 20:30:16/

题目来源于:卡码网KamaCoder

题解来源于:GitHub - youngyangyang04/kamacoder-solutions: 卡码网题解全集 

34.大鱼吃小鱼

题目描述

现在有 N 条鱼,每条鱼的体积为 Ai,从左到右排成一排。

A 数组是一个排列。 定义一次大鱼吃小鱼的操作为:对于每一条鱼,它在每一次操作时都会吃掉右边比自己小的一条鱼,值得注意的是,在同一次操作中,每条鱼吃掉比自己小的鱼是同时发生的。 

举例:假设有三条鱼,体积分别为 [5, 4, 3],在一次操作中,4 吃 3,5 吃 4,最终只剩下 [5] 一条鱼。 问题是,在多少次操作之后,鱼的数量就不会变了。

输入

输入共有两行。
第一行为一个整数 N。
第二行为一个数组,代表鱼的体积。

输出

输出一个非负整数,表示在多少次操作后鱼的数量就不会变了。

样例输入 

6
4 3 2 3 2 1

样例输出 

2
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;/*** @author light* @Description 大鱼吃小鱼*** (思路:* 判断该数组是否是递增数组,如果不是递增数组,则代表发生一次大鱼吃小鱼操作* 从后向前遍历数组,当前一个数值大于当前数值时,将数值删掉,直到数组递增数组为止* @create 2023-08-24 10:00*/
public class Main {public static void main(String[] args) {Scanner input=new Scanner(System.in);int n=input.nextInt();List<Integer> list=new ArrayList<>(); //利用list,方便元素删除操作for (int i = 0; i <n; i++) {list.add(input.nextInt());}int count=0; //记录大鱼吃小鱼的操作数while(!isIncrease(list)){for(int i=list.size()-1;i>0;i--){if(list.get(i)<list.get(i-1)){list.remove(i);}}count++;}System.out.println(count);}//判断是否为递增的private static boolean isIncrease(List<Integer> list) {for (int i =1; i < list.size(); i++) {if(list.get(i)<list.get(i-1)){return false;}}return true;}
}

 35. 打印二维数组

题目描述

给定一个空的二维整型数组 array[n][m],根据下图的填充规则填充该二维数组。

输入

输入包括两个正整数n,m,代表二维整型数组的大小。

输出

按行输出二维整型数组,每个数字后面都有一个空格。

样例输入 复制

4 4

样例输出 复制

1 2 4 7 
3 5 8 11 
6 9 12 14 
10 13 15 16 

 

import java.util.Scanner;/*** @author light* @Description 打印二维数组** 给定一个空的二维整型数组 array[n][m],根据下图的填充规则填充该二维数组。* @create 2023-08-24 10:03*/
public class n6 {public static void main(String[] args) {Scanner input=new Scanner(System.in);int n=input.nextInt();int m=input.nextInt();int[][] nums=new int[n][m];int count=1;//从左到右遍历for (int i = 0; i <m-1; i++) {int x=0;int y=i;while(x!=n&&y!=-1){nums[x][y]=count++;x++;y--;}}//从上到下for (int i = 0; i <n ; i++) {int x=i;int y=m-1;while(y!=-1&&x!=n){nums[x][y]=count++;x++;y--;}}for (int k = 0; k < n; k++) {for (int l = 0; l < m; l++) {System.out.print(nums[k][l]+" ");}System.out.println();}}
}

36. 网格路径和

题目描述

现有一个 m * n的网格,每个网格上都有一个非零整数,每次只能向下或者向右移动一格,计算从左上开始移动到右下的所有路径上数字的最大和。

输入

输入为一行,代表一个二维数组。

输出

输出一个整数,代表路径上的数字最大和。

样例输入 复制

[[2,3,1],[2,5,3],[4,2,1]]

样例输出 复制

14
import java.util.Scanner;/*** @author light* @Description 网格路径和*** (思路:动规* @create 2023-08-24 10:04*/
public class Main {public static void main(String[] args) {Scanner input=new Scanner(System.in);String arrayString = input.next();int[][] grid = parse2dArray(arrayString);System.out.println(getMaxValue(grid));}private static int getMaxValue(int[][] grid) {int m=grid.length; //行int n=grid[0].length;  //列int[][] dp=new int[m][n];  //dp[i][j]代表了从左上角到达格子(i, j)位置的最大路径和。//初始化dp[0][0]dp[0][0]=grid[0][0];//初始化第0列for (int i = 1; i < m; i++) {dp[i][0]=dp[i-1][0]+grid[i][0];}//初始化第0行for (int i = 1; i < n; i++) {dp[0][i]=dp[0][i-1]+grid[0][i];}for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1])+grid[i][j];}}return dp[m-1][n-1];}// 将字符串解析为二维数组private static int[][] parse2dArray(String arrayString) {String[] rowsString=arrayString.substring(1,arrayString.length()-2).split("],");// "[[1,2,3],[2,3,4],[3,4,5]]" -> "[1,2,3", "[2,3,4", "[3,4,5"int rows=rowsString.length; //行int cols=rowsString[0].split(",").length; //列int[][] digital2dArray = new int[rows][cols];for (int i = 0; i < rows; i++) {String[] element=rowsString[i].substring(1).split(",");//"[1,2,3"->1 2 3//"[2,3,4"->2 3 4//"[3,4,5"->3 4 5for (int j = 0; j < cols; j++) {digital2dArray[i][j]=Integer.parseInt(element[j]);}}return digital2dArray;}
}

 


http://www.ppmy.cn/news/1057260.html

相关文章

Windows快速关闭占用某端口的进程

在Windows操作系统中&#xff0c;你可以使用以下方法来快速关闭占用特定端口的进程&#xff0c;比如端口8848&#xff1a; 使用命令行工具 打开命令提示符&#xff08;Command Prompt&#xff09;。 输入以下命令&#xff0c;将端口号替换为你需要关闭的端口&#xff08;例如…

Python系统学习1-9-类三之特征

一、封装 数据角度&#xff1a;将一些基本数据类型复合成一个自定义类型。 优势&#xff1a;将数据与对数据的操作相关联。 代码可读性更高&#xff08;类是对象的模板&#xff09;。 行为角度&#xff1a;向类外提供必要的功能&#xff0c;隐藏实现的细节。 优势&#xff…

MySQL中的数据类型

文章目录 1 常见的数据类型2 整数类型2.1 属性 M2.2 属性 UNSIGNED2.3 属性 ZEROFILL2.4 整数类型的适用场景 3 浮点类型4 定点类型5 位类型6 日期与时间类型6.1 YEAR 类型6.2 DATE 类型6.3 TIME 类型6.4 DATETIME 类型6.5 TIMESTAMP 类型 1 常见的数据类型 类型类型分类整数类…

20. 有效的括号(简单系列)

给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都…

免费照片转绘画风格软件-FotoSketcher

FotoSketcher一款免费照片转绘画风格软件&#xff0c;只需点击几下鼠标即可自动将照片转换为艺术作品。支持从铅笔素描到水彩画或油画、钢笔画、墨水画、抽象艺术和卡通画&#xff0c;有 20 多种不同的风格可供选择&#xff0c;工具还可以修改原始照片增强对比度、锐化、简化图…

共享数据-vue3

vuex方案 安装vuex4.x 两个重要变动&#xff1a; 去掉了构造函数Vuex&#xff0c;而使用createStore创建仓库 为了配合composition api&#xff0c;新增useStore函数获得仓库对象&#xff1b;获取路由对象使用useRouter global state 由于vue3的响应式系统本身可以脱离…

(四)Doceke安装MySQL镜像+Docker启动MySQL容器

Doceke安装MySQL镜像/Docker启动MySQL容器 一、doceke安装MySQL镜像 切换到root用户&#xff0c;su root 。 1、启动Docker 启动&#xff1a;sudo systemctl start docker 停止&#xff1a;systemctl stop docker 重启&#xff1a;systemctl restart docker 查看docker运行…

get和post请求的区别以及post请求的url参数问题

1.主要区别 1.GET请求方法有以下几个特点&#xff1a; 默认的请求方法&#xff1b;GET请求通常用于获取信息&#xff0c;所以应该是安全的、幂等的&#xff1b;请求数据表现在URL上&#xff0c;以名称/值的形式发送。对请求的长度有限制&#xff1b;在IE和Opera等浏览器会产生…