![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java编程练习
一些java编程练习
auEee^
永远没有正确的选择 要让选择变正确
展开
-
编程练习【找出数组中的幸运数】
利用一个Map来记录每个数字和它出现的次数,遍历数组,将数字作“键”,次数作“值”,再比较次数和数字一样的值,保存到结果result中,循环此操作,找到最大的幸运数字。解释:数组中唯一的幸运数是 2 ,因为数值 2 的出现频次也是 2。解释:1、2 以及 3 都是幸运数,只需要返回其中最大的 3。输入:arr = [7,7,7,7,7,7,7]输入:arr = [1,2,2,3,3,3]输入:arr = [2,2,2,3,3]如果数组中不含幸运数,则返回 -1。输入:arr = [2,2,3,4]原创 2023-06-17 23:11:19 · 681 阅读 · 0 评论 -
编程练习【左右元素和的差值】
数组 answer 为 [|0 - 15|,|10 - 11|,|14 - 3|,|22 - 0|] = [15,1,11,22]。解释:数组 leftSum 为 [0,10,14,22] 且数组 rightSum 为 [15,11,3,0]。分别用两个数组记录左边和的数组和右边和的数组,使用Math.abs()方法得到他们的差值并存到结果数组中去。解释:数组 leftSum 为 [0] 且数组 rightSum 为 [0]。数组 answer 为 [|0 - 0|] = [0]。原创 2023-06-15 22:42:16 · 625 阅读 · 0 评论 -
编程练习【稀疏数组搜索】
输入:words = ["at", "", "", "", "ball", "", "", "car", "", "","dad", "", ""], s = "ball"输入: words = ["at", "", "", "", "ball", "", "", "car", "", "","dad", "", ""], s = "ta"分别记录数组的最左边和最右边的索引,遇到空字符串时将两个指针分别向前向后移动,然后根据二分查找的方式来找到目标字符串。商业转载请联系官方授权,非商业转载请注明出处。原创 2023-06-14 15:16:31 · 81 阅读 · 0 评论 -
编程练习【最多单词数的发件人】
输入:messages = ["Hello userTwooo","Hi userThree","Wonderful day Alice","Nice day userThree"], senders = ["Alice","userTwo","userThree","Alice"]输入:messages = ["How is leetcode for everyone","Leetcode is useful for practice"], senders = ["Bob","Charlie"]原创 2023-06-13 15:19:12 · 608 阅读 · 0 评论 -
编程练习【反转单词前缀】
例如,如果 word = "abcdefd" 且 ch = "d" ,那么你应该 反转 从下标 0 开始、直到下标 3 结束(含下标 3 )。反转从下标 0 到下标 3(含下标 3)的这段字符,结果字符串是 "dcbaefd"。反转从下标 0 到下标 3(含下标 3)的这段字符,结果字符串是 "zxyxxe"。输入:word = "abcdefd", ch = "d"输入:word = "xyxzxe", ch = "z"输入:word = "abcd", ch = "z"输出:"dcbaefd"原创 2023-06-12 15:35:18 · 631 阅读 · 0 评论 -
编程练习【按摩师】
定义一个动态数组dp[],先将nums[]数组第一个元素放入数组,再比较下一个元素和第一个元素,将较大的值放入dp[1]中,接着从下一个数字索引开始遍历nums[]数组,dp[i]的值应该是dp[i-1]和dp[i-2]+nums[i]相比较大的值,因为不能拿到相邻的两个值,所以dp[i]=Math.max(dp[i-1]和dp[i-2]+nums[i]),最后返回数组最后一个元素即为要得到的结果。输入: [2,1,4,5,3,1,1,3]输入: [2,7,9,3,1]输入: [1,2,3,1]原创 2023-06-12 15:15:17 · 738 阅读 · 0 评论 -
编程练习【重复至少 K 次且长度为 M 的模式】
题目要求我们找到一个连续出现k次长度m的子数组,我们定义一个index来找到这个子数组的左端点,从m索引开始遍历,判断和前面i-m索引的是否和当前相等,不相等,左端点继续更新,相等判断剩余的子数组是否满足k*m即要求的子数组的长度,如果满足即得到结果。注意,不能计算重叠的重复次数。输入:arr = [1,2,1,2,1,1,1,3], m = 2, k = 2。输入:arr = [1,2,1,2,1,3], m = 2, k = 3。输入:arr = [1,2,3,1,2], m = 2, k = 2。原创 2023-06-10 15:56:43 · 712 阅读 · 0 评论 -
编程练习【验证外星语词典】
解释:当前三个字符 "app" 匹配时,第二个字符串相对短一些,然后根据词典编纂规则 "apple" > "app",因为 'l' > '∅',其中 '∅' 是空白字符,定义为比任何其他字符都小(更多信息)。否则,返回 false。输入:words = ["word","world","row"], order = "worldabcefghijkmnpqstuvxyz"解释:在该语言的字母表中,'d' 位于 'l' 之后,那么 words[0] > words[1],因此单词序列不是按字典序排列的。原创 2023-06-09 19:32:08 · 529 阅读 · 0 评论 -
编程练习【移除字符串中的尾随0】
链接:https://leetcode.cn/problems/remove-trailing-zeros-from-a-string。给你一个用字符串表示的正整数 num ,请你以字符串形式返回不含尾随零的整数 num。解释:整数 "51230100" 有 2 个尾随零,移除并返回整数 "512301"。商业转载请联系官方授权,非商业转载请注明出处。解释:整数 "123" 不含尾随零,返回整数 "123"。输入:num = "51230100"输入:num = "123"输出:"512301"原创 2023-06-08 19:13:17 · 77 阅读 · 0 评论 -
编程练习【交替位二进制数】
对于一个二进制数比如010101,将它右移一位得到001010,将右移后和右移前数字异或,即可得到011111,如此可知交替位二进制右移异或后可以得到一个01111.....的结果,我们只需要判断这个结果加一是否与原始数据相与是否等于0。从最低位至最高位,我们用对 2 取模再除以 2 的方法,依次求出输入的二进制表示的每一位,并与前一位进行比较。给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。解释:11 的二进制表示是:1011.原创 2023-06-07 23:07:32 · 188 阅读 · 0 评论 -
编程练习【最小k个数】
利用优先队列的特点,将数组前k个数字先放入队列中,然后遍历剩下的数字,和队列第一个元素比较,如果队列第一个元素大于后面的数字,则数字出队,小的数字入队,遍历完数组后即可得到最小k个数的一个队列,再将元素保存到数组中即可。链接:https://leetcode.cn/problems/smallest-k-lcci。输入: arr = [1,3,5,7,2,4,6,8], k = 4。设计一个算法,找出数组中最小的k个数。将数组排序,再将数组按顺序复制k个到结果数组中。输出: [1,2,3,4]原创 2023-06-06 23:03:39 · 187 阅读 · 0 评论 -
编程练习【根据规则将箱子分类】
如果箱子既不是 "Bulky" ,也不是 "Heavy" ,那么返回类别为 "Neither"。如果箱子是 "Bulky" 但不是 "Heavy" ,那么返回类别为 "Bulky"。如果箱子是 "Heavy" 但不是 "Bulky" ,那么返回类别为 "Heavy"。由于箱子不是 "Bulky" 但是是 "Heavy" ,所以我们返回 "Heavy"。如果箱子同时是 "Bulky" 和 "Heavy" ,那么返回类别为 "Both"。但是质量 >= 100 ,所以箱子是 "Heavy" 的。原创 2023-06-05 23:41:41 · 302 阅读 · 0 评论 -
编程练习【矩阵对角线元素的和】
遍历整个二维数组,定义一个sum记录累加结果,累加对角线即累加每行第i个数字和第n-1-i个数字,遍历完数组后一定要判断二位数组行数是否为奇数个,如果是奇数个,累加和要减去最中间的数字,因为那个数字加了2次。遍历二维数组,遇到i==j或者i+j==n-1时,说明是每行需要拿到的那个对角线数字,累加。解释:对角线的和为:1 + 5 + 9 + 3 + 7 = 25。请注意,元素 mat[1][1] = 5 只会被计算一次。输入:mat = [[1,1,1,1],输入:mat = [[1,2,3],原创 2023-06-04 21:51:24 · 692 阅读 · 0 评论 -
编程练习【旋转字符串】
长度一样时,假设s旋转i位,那么goal中的某个字符goal[j]必然和s[i+j%n]相对应,因此我们在i固定的情况下,遍历所有j,如果所有字符都对应,则返回true,否则,遍历其他的i;如果所有的i都不能使s变成goal,则返回false。只需比较一下两个字符串的长度,然后判断旋转前的字符串*2中是否存在旋转后的字符串就ok,因为字符串*2中已经包含了所有可能的移动情况。输入: s = "abcde", goal = "cdeab"输入: s = "abcde", goal = "abced"原创 2023-06-01 19:32:25 · 55 阅读 · 0 评论 -
编程练习【计算列车到站时间】
解释:列车正点到站时间是 13:00 ,延误 11 小时,所以列车实际到站的时间是 13 + 11 = 24(在 24 小时制中表示为 00:00 ,所以返回 0)。给你一个正整数 arrivalTime 表示列车正点到站的时间(单位:小时),另给你一个正整数 delayedTime 表示列车延误的小时数。解释:列车正点到站时间是 15:00 ,延误 5 小时,所以列车实际到站的时间是 15 + 5 = 20(20:00)。由于时间是24小时制,我们只需要将正点时间与延点时间相加与24取余即可。原创 2023-05-23 22:01:25 · 533 阅读 · 0 评论 -
编程练习【判断两个时间是否存在冲突】
输入:event1 = ["01:15","02:00"], event2 = ["02:00","03:00"]输入:event1 = ["01:00","02:00"], event2 = ["01:20","03:00"]输入:event1 = ["10:00","11:00"], event2 = ["14:00","15:00"]当两个事件存在某个非空的交集时(即,某些时刻是两个事件都包含的),则认为出现 冲突。解释:两个事件的交集从 01:20 开始,到 02:00 结束。原创 2023-05-24 22:57:24 · 924 阅读 · 0 评论 -
编程练习【破环回文数】
例如,"abcc” 字典序比 "abcd" 小,因为不同的第一个位置是在第四个字符,显然 'c' 比 'd' 小。思路:破环回文数,且需要破坏后字典序小,直接遍历回文串,找到第一个大于“a”的字符,将它替换成“a”即可,如果遍历完没有说明字符串全是“a”,那么直接将最后一个字符替换成“b”即可。解释:存在多种方法可以使 "abccba" 不是回文,例如 "zbccba", "aaccba", 和 "abacba"。解释:不存在替换一个字符使 "a" 变成非回文的方法,所以返回空字符串。原创 2023-05-26 22:30:46 · 685 阅读 · 0 评论 -
编程练习【找出数组的最大公约数】
在不使用工具类的情况下,首先我们要遍历数组找到数组的最大值和最小值,然后找到最大值到最小值之间能够让两个数字都整除的值。给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数。两个数的 最大公约数 是能够被两个数整除的最大正整数。输入:nums = [2,5,6,9,10]输入:nums = [7,5,6,8,3]输入:nums = [3,3]3 和 3 的最大公约数是 3。nums 中最小的数是 2。nums 中最小的数是 3。nums 中最小的数是 3。nums 中最大的数是 3。原创 2023-05-29 20:53:03 · 757 阅读 · 0 评论 -
编程练习【找不同】
由题可知,由于多出来的是字符,所以我们可以采用ASCII码来计算两个字符串的每个字符ASCII码之和,最后相减即可得到最终结果。链接:https://leetcode.cn/problems/find-the-difference。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。由^位运算的特质,即可找到出现奇数次的字符,即为所求。输入:s = "abcd", t = "abcde"输入:s = "", t = "y"解释:'e' 是那个被添加的字母。请找出在 t 中被添加的字母。原创 2023-05-30 23:23:08 · 706 阅读 · 0 评论 -
编程练习【将找到的值乘以2】
如果在 nums 中找到 original ,将 original 乘以 2 ,得到新 original(即,令 original = 2 * original)。给你一个整数数组 nums ,另给你一个整数 original ,这是需要在 nums 中搜索的第一个数字。使用一个哈希表来记录数组中的数,如果能够找到目标数字,则将数字乘以2,一直到找不到相等的数字。输入:nums = [5,3,6,1,12], original = 3。输入:nums = [2,7,9], original = 4。原创 2023-05-31 19:17:00 · 1150 阅读 · 0 评论