![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
练习题
pinkdown
不慌不忙,花期漫长。
展开
-
最小差值
给你一个整数数组 A,请你给数组中的每个元素 A[i] 都加上一个任意数字 x (-K <= x <= K),从而得到一个新数组 B 。返回数组 B 的最大值和最小值之间可能存在的最小差值。示例 1:输入:A = [1], K = 0输出:0解释:B = [1]示例 2:输入:A = [0,10], K = 2输出:6解释:B = [2,8]示例 3:输入:A = [1,3,6], K = 3输出:0解释:B = [3,3,3] 或 B = [4,4,4]原创 2021-03-14 11:08:10 · 289 阅读 · 0 评论 -
链表的中间节点
给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NUL原创 2021-03-10 22:55:22 · 112 阅读 · 0 评论 -
最长特殊序列
给你两个字符串,请你从这两个字符串中找出最长的特殊序列。「最长特殊序列」 定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列)。子序列 可以通过删去字符串中的某些字符实现,但不能改变剩余字符的相对顺序。空序列为所有字符串的子序列,任何字符串为其自身的子序列。输入为两个字符串,输出最长特殊序列的长度。如果不存在,则返回 -1。示例 1:输入: "aba", "cdc"输出: 3解释: 最长特殊序列可为 "aba" (或 "cdc"),两者均为自身的子序列且不是对方的子序列。原创 2021-03-05 08:28:06 · 203 阅读 · 1 评论 -
重塑矩阵
在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入: nums = [[1,2], [3,4]]r = 1, c = 4输出: [[1,2,3,4]]解释:行遍原创 2021-03-02 22:40:26 · 237 阅读 · 0 评论 -
数组的相对排序
问题描述给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]输出:[2,2,2,1,4,3,3,9,6,7,19]提示:1 <= arr1.length,原创 2021-03-02 22:10:26 · 315 阅读 · 0 评论 -
计算力扣银行的钱
Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。最开始,他在周一的时候存入 1 块钱。从周二到周日,他每天都比前一天多存入 1 块钱。在接下来每一个周一,他都会比 前一个周一 多存入 1 块钱。给你 n ,请你返回在第 n 天结束的时候他在力扣银行总共存了多少块钱。示例 1:输入:n = 4输出:10解释:第 4 天后,总额为 1 + 2 + 3 + 4 = 10 。示例 2:输入:n = 10输出:37解释:第 10 天后,总额为 (1 + 2 + 3 + 4原创 2021-02-09 21:32:59 · 150 阅读 · 0 评论 -
【力扣】1356. 根据数字二进制下 1 的数目排序
1356. 根据数字二进制下 1 的数目排序题目描述:给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。请你返回排序后的数组。示例 1:输入:arr = [0,1,2,3,4,5,6,7,8]输出:[0,1,2,4,8,3,5,6,7]解释:[0] 是唯一一个有 0 个 1 的数。[1,2,4,8] 都有 1 个 1 。[3,5,6] 有 2 个 1 。[7] 有 3原创 2021-02-07 11:01:15 · 99 阅读 · 1 评论 -
【力扣】链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.实现public static ListNode getKthFromEnd(ListNode head, int k) { ListNod原创 2020-12-04 22:31:29 · 131 阅读 · 0 评论 -
【力扣】上升下降字符串
给你一个字符串 s ,请你根据下面的算法重新构造字符串: 从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。 从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。 重复步骤 2 ,直到你没法从 s 中选择字符。 从 s 中选出 最大 的字符,将它 接在 结果字符串的后面。 从 s 剩余字符中选出 最大 的字符,且该字符比上一个添加的字符小,将它 接在 结果字符串后面。 重复步骤 5 ,直到你没法从 s 中选择字符。 重复步骤 1 到 6 ,原创 2020-12-04 22:20:58 · 81 阅读 · 0 评论 -
【力扣】汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。实现/** * 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y,计算它们之间的汉明距离。 * * @author Z * */p原创 2020-11-27 20:29:09 · 133 阅读 · 0 评论 -
【力扣】翻转图像
给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。示例 1:输入: [[1,1,0],[1,0,1],[0,0,0]]输出: [[1,0,0],[0,1,0],[1,1,1]]解释: 首先翻转每一行: [[0,1,1],[1,0,原创 2020-11-13 10:56:34 · 81 阅读 · 0 评论 -
【力扣】字符串转换整数
今天做了这一题,简直是突破性进展,不是我写出了多么厉害的代码(本人还是依旧的菜),而是一直错,一直错并没有放弃啊,最后写出来一个垃圾到尘埃里的代码,各位小伙伴谨慎参考,写个博客纪念一下这里程碑式的进步。题目请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直原创 2020-11-05 19:43:55 · 243 阅读 · 0 评论 -
【力扣习题】验证外星语词典
看到上图,各位就知道我有多垃圾了,但是做了好长时间才整出来的题,还是有必要纪念一下的。题目某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;否则,返回 false。示例 1:输入:words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxy.原创 2020-11-04 16:40:30 · 182 阅读 · 0 评论 -
【力扣习题】最小的k个数
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]实现class Solution { public int[] getLeastNumbers(int[] arr, int k) { Arrays.sort(arr);原创 2020-11-04 14:45:35 · 184 阅读 · 0 评论 -
【力扣习题】复写零
给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。要求:请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。示例 1:输入:[1,0,2,3,0,4,5,0]输出:null解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]示例 2:输入:[1,2,3]输出:null解释:调用函数后,输入的数组将被修改为:[1,2,3]实现class Solution {原创 2020-11-04 14:37:03 · 77 阅读 · 0 评论 -
【力扣】连续字符
给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。请你返回字符串的能量。示例 1:输入:s = "leetcode"输出:2解释:子字符串 "ee" 长度为 2 ,只包含字符 'e' 。示例 2:输入:s = "abbcccddddeeeeedcba"输出:5解释:子字符串 "eeeee" 长度为 5 ,只包含字符 'e' 。示例 3:输入:s = "triplepillooooow"输出:5示例 4:输入:s = "hooraaaaaa原创 2020-11-03 22:19:26 · 343 阅读 · 0 评论 -
【力扣】URL化
URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)示例1: 输入:"Mr John Smith ", 13 输出:"Mr%20John%20Smith"示例2: 输入:" ", 5 输出:"%20%20%20%20%20"实现class Solution { public String replac原创 2020-11-03 22:10:41 · 243 阅读 · 0 评论 -
【力扣】两数之和 II - 输入有序数组
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, ind原创 2020-10-28 14:42:55 · 100 阅读 · 0 评论 -
【力扣】丢失的数字
给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?示例 1:输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。示例 2:输入:nums = [0,1]输出:2解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内原创 2020-10-28 14:37:15 · 226 阅读 · 0 评论 -
【力扣】最大连续1的个数
给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。实现代码class Solution { public int findMaxConsecutiveOnes(int[] nums) { int max = 0; int count = 0; for (原创 2020-10-27 23:28:48 · 205 阅读 · 0 评论 -
【力扣】返回倒数第k个节点
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。示例:输入: 1->2->3->4->5 和 k = 2输出: 4实现/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution {原创 2020-10-12 15:39:14 · 286 阅读 · 0 评论 -
【力扣】大的国家
SQL架构这里有张 World 表+-----------------+------------+------------+--------------+---------------+| name | continent | area | population | gdp |+-----------------+------------+------------+--------------+---------------+| Afgh原创 2020-10-12 15:18:29 · 128 阅读 · 0 评论 -
【力扣】速算机器人
小扣在秋日市集发现了一款速算机器人。店家对机器人说出两个数字(记作 x 和 y),请小扣说出计算指令:"A" 运算:使 x = 2 * x + y;"B" 运算:使 y = 2 * y + x。在本次游戏中,店家说出的数字为 x = 1 和 y = 0,小扣说出的计算指令记作仅由大写字母 A、B 组成的字符串 s,字符串中字符的顺序表示计算顺序,请返回最终 x 与 y 的和为多少。示例 1:输入:s = "AB"输出:4解释:经过一次 A 运算后,x = 2, y = 0。再经过一次 B原创 2020-10-12 15:12:03 · 237 阅读 · 0 评论 -
按奇偶排序数组
给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。实现class Solution { public static void main(String[] args) { System.out.println(Arrays.toString(sortArrayByPar原创 2020-10-08 22:58:51 · 184 阅读 · 0 评论 -
【力扣】只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4实现public static int singleNumber(int[] nums) { int result = nums[0]; for (int i = 1; i < nums.length; i++原创 2020-10-08 22:49:47 · 76 阅读 · 0 评论 -
【力扣】组合两个表
表1: Person+-------------+---------+| 列名 | 类型 |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-------------+---------+PersonId 是上表主键表2: Address+-------------+---------+| 列名原创 2020-10-08 22:44:55 · 118 阅读 · 0 评论 -
蛇形填数
描述在n x n方针里填入1,2,……,nxn,要求填成蛇形。例如,n=4时方阵为:10 11 12 19 16 13 28 15 14 37 6 5 4实现代码#include<stdio.h>#include<string.h>#define maxn 20int a[maxn][maxn];int main(){ int n, x, y, tot = 0; scanf("%d", &n); memset(a, 0, siz原创 2020-10-05 22:15:44 · 305 阅读 · 1 评论 -
和为s的两个数字
题目描述输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]实现代码public static int[] twoSum(int[] nums, int target原创 2020-10-05 21:57:19 · 1935 阅读 · 0 评论 -
阶乘之和
问题描述输入n,计算S = 1! + 2! + 3! +……+n!的末6位(不含前导0)。n <= 10^6,n!表示前n个正整数之积。样例输入:10样例输出:37913实现代码#include<stdio.h>#include<time.h>int main(){ const int MOD = 1000000; int n, S = 0; scanf("%d", &n); for(int i = 1; i <=原创 2020-10-04 18:35:30 · 779 阅读 · 0 评论 -
开灯问题
问题描述有n盏灯,编号为1~n。第一个人把所有灯打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推。一共有k个人,问最后有哪些灯开着?输入n和k,输出开着的灯的编号。k<= n <= 1000。样例输入:7 3样例输出:1 5 6 7实现代码#include<stdio.h>#include<string.h>#define maxn 101int a原创 2020-10-04 18:28:06 · 269 阅读 · 0 评论 -
【力扣】509.斐波那契数
题目描述斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定 N,计算 F(N)。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1.示例 2:输入:3输出:2解释:F(3) = F(2) + F(1) = 1 + 1 = 2原创 2020-10-04 18:05:53 · 74 阅读 · 0 评论 -
近似计算
描述近似计算Π/4 = 1 - 1/3 + 1/5 - 1/7 +……,直到最后一项小于10^(-6)。实现代码#include<stdio.h>int main(){ double sum = 0; for(int i = 0; ; i++){ double term = 1.0 / (i * 2 + 1); if(i % 2 == 0 ){ sum += term; }else{原创 2020-10-03 20:47:02 · 407 阅读 · 0 评论 -
3n+1问题
问题描述对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。经过若干次的这样的变换,一定会使n变为1.输入n,输出变换的次数。实现代码#include<stdio.h>int main(){ int n2, count = 0; scanf("%d", &n2); long long n = n2; while(n > 1){ if(n % 2 == 1){ n = n*3 +原创 2020-10-03 17:30:27 · 313 阅读 · 0 评论 -
7744问题
题目描述输出所有形如aabb的4位完全平方数(即前两位数字相等,后两位数字也相等)。该问题也叫做aabb问题。以下方法不需要开平方操作,理解起来更加简单实现代码#include<stdio.h>int main(){ for(int x = 1; ; x++){ int n = x * x; if(n < 1000) continue; if(n > 9999) break; int hi = n /原创 2020-10-03 17:25:45 · 431 阅读 · 2 评论 -
统计最大组的数目
给你一个整数 n 。请你先求出从 1 到 n 的每个整数 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。请你统计每个组中的数字数目,并返回数字数目并列最多的组有多少个。示例 1:输入:n = 13输出:4解释:总共有 9 个组,将 1 到 13 按数位求和后这些组分别是:[1,10],[2,11],[3,12],[4,13],[5],[6],[7],[8],[9]。总共有 4 个组拥有的数字并列最多。示例 2:输入:n = 2输出:2解释:总共原创 2020-10-03 16:59:52 · 342 阅读 · 0 评论 -
找不同
题目描述给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例输入:s = "abcd"t = "abcde"输出:e解释:'e' 是那个被添加的字母。实现代码public class FindTheDifference { public static void main(String[] args) { System.out.println(findTheDifferen原创 2020-09-29 23:43:47 · 135 阅读 · 0 评论 -
消失的数字
数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?示例 1:输入:[3,0,1]输出:2示例 2:输入:[9,6,4,2,3,5,7,0,1]输出:8实现代码public static int missingNumber(int[] nums) { int data = 0; for (int i = 0; i < nums.length; i++) { data ^= i; //如果一个数字在数组中,那么会异或原创 2020-09-28 23:07:44 · 314 阅读 · 0 评论 -
6和9組成的最大数字
/* 给你一个仅由数字 6 和 9 组成的正整数 num。 你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。 请返回你可以得到的最大数字。 */public class Maximum69Number { public static void main(String[] args) { System.out.println(maximum69Number(9966)); } public static int maximum69Number (int nu原创 2020-09-28 22:52:36 · 188 阅读 · 0 评论 -
增减字符串匹配
实现代码在这里插入代码片原创 2020-09-24 19:31:50 · 68 阅读 · 0 评论 -
矩阵中的幸运数
给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。幸运数是指矩阵中满足同时下列两个条件的元素:在同一行的所有元素中最小 在同一列的所有元素中最大示例1输入:matrix = [[3,7,8],[9,11,13],[15,16,17]]输出:[15]解释:15 是唯一的幸运数,因为它是其所在行中的最小值,也是所在列中的最大值。示例2输入:matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]]输出:[12]原创 2020-09-23 20:31:03 · 397 阅读 · 0 评论