![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
练习题
文章平均质量分 72
尤蒂莱兹
渴望伯乐的失业程序员
展开
-
40-计算质数
原题目:统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。思路:1 设置一个n+1大小的数组,将数组元素全部置为12 接着用for循环从2开始遍历这个数组的元素,将遍历到的数组元素置为0,并且将这个元素下标值倍数值的元素都置为0,知道这个下标值超过n跳出循环3接着再从下一个没有被置为0的元素开始,重复上述步骤,知道遍历到n停止。代码:class Solution {public: i原创 2020-07-08 08:10:02 · 145 阅读 · 0 评论 -
38-字符中的唯一字符
原题目:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode”返回 0s = “loveleetcode”返回 2思路:用for循环遍历每一个元素,然后用find函数从前到后寻找这个元素并返回这个元素所在的位置,用rfind从后到钱寻找这个元素并且返回这个元素所在的位置,如果两个元素的位置相同,则表明那个元素是它的第一个不重复元素。代码:class Solution {public: int firstUniqC原创 2020-07-08 00:08:35 · 189 阅读 · 0 评论 -
39-EXCEL列表序号
原题目:给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3…Z -> 26AA -> 27AB -> 28…示例 1:输入: “A”输出: 1示例 2:输入: “AB”输出: 28示例 3:输入: “ZY”输出: 701思路:用for循环从前往后遍历字符串字符,将遍历的字符-‘A’+1就是这个字符的值,每往后遍历一个元素,合计的数字=字符的值+前一个合计的数字*26。代码:clas原创 2020-07-07 23:54:28 · 161 阅读 · 0 评论 -
练习题37-两个数组的交集 II
原题目:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。思路:先对两个数组进行从小到大进行排序然后用从nums2的第一个元素开始,用if进行比较,如果小于,就用nums2的下一个数原创 2020-07-06 23:05:28 · 180 阅读 · 0 评论 -
练习题36-多数元素(有动画演示)
原题目:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2思路:先用排序函数对数组进行排序,然后使用if语句判断后面的数字是否与第一个相等,如果相等,计数+1,如果不相等,就让计数-1,当计数为0的时候,就让计数从从第i+1个元素开始算起。代码:class Solution原创 2020-07-06 22:28:41 · 184 阅读 · 0 评论 -
练习题35-杨辉三角
原题目:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]思路1:首先生成每一个行中列数量都不同的vecotr数组并且将它们赋值为0,然后用一个二维数组按照规律进行赋值即可。代码1;class Solution {public: vector<vector<int>> ge原创 2020-07-05 17:04:14 · 394 阅读 · 0 评论 -
练习题34-位一的个数
原题目:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:00000000000000000000000010000000输出:1解释:输入的二进制串 00000000000000000000000010000000 中,共原创 2020-07-05 16:50:45 · 142 阅读 · 0 评论 -
练习题33-有效的字母异位词
原题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false思路:用排序函数将这两个字符串进行排序,然后直接判断是否相等即可代码:class Solution {public: bool isAnagram(string s, string t) { int x,y;原创 2020-07-04 20:07:27 · 94 阅读 · 0 评论 -
练习题32-移动零
原题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路:将数字不等于0的数字按遍历顺序依次从前往后存,然后如果不等于0的数字的数量小于数组长度的话,将这个数字后面的下标值置为0.代码:class Solution {public: void moveZeroes(vector<int&g原创 2020-07-04 20:04:04 · 229 阅读 · 0 评论 -
练习题31(两道差不多类型的题目) -缺失数字和只出现一次的数字
题目一:给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8思路:将数组中的数字用下标进行抵消,最后剩下的就是缺失的数字。0 ^ 4 = 44 ^ 4 = 011223 = 3代码:class Solution {public:int missingNumber(vector<int>& num原创 2020-07-03 18:11:24 · 184 阅读 · 0 评论 -
练习题30-旋转数组
原题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99] 和 k = 2输出: [3,99,-1,-100]解释:向右旋转 1 步: [99,-1,-1添加链接原创 2020-06-29 09:27:15 · 102 阅读 · 0 评论 -
练习题29-删除重复元素
原题目:给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true思路:使用set容器,来删除重复复元素,然后返回判断值即可代码:class Solution {public: bool contain原创 2020-06-29 09:17:44 · 196 阅读 · 0 评论 -
练习题28 颠倒二进制位
原题目颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。示例 2:输入:1111111111111111111原创 2020-06-27 20:20:34 · 453 阅读 · 0 评论 -
练习题27-阶乘后的零
原题目:给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.思路:通过观察可以发现,阶乘中个位中有5的倍数阶乘的就能够在末尾形成0,所以将要阶乘的数不断除以5,除到5时将商相加即可代码;class Solution {public: int trailingZeroes(int n) { int count=0;原创 2020-06-27 18:25:22 · 225 阅读 · 0 评论 -
练习题26-快乐数
编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。示例:输入:19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1true思路:通过计算可知,当个位数位原创 2020-06-24 22:38:34 · 333 阅读 · 0 评论 -
练习题25-两数之和2
原题目:给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1,原创 2020-06-23 23:37:07 · 172 阅读 · 0 评论 -
练习题24-二进制求和
原题目:给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”思路:根据两个字符串长度从后往前遍历a,b数组,用x,y存储每一次遍历到的字符,当其中一个字符长度减为0时,会自动变为0。遍历到的字符进行相加然后与2取余作为两个数的和,将两个数相加的值除以2作为进位值,并把这个值插入到字符串第一原创 2020-06-21 21:33:03 · 253 阅读 · 0 评论 -
练习题23-求根
原题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。思路:根据根与数的关系,可以推出用exp函数计算指数函数的值,用log函数计算lnx函数的值注意:两个根相乘可以会导致溢出,相乘之后应该先强制转成long long 类型然后用re原创 2020-06-20 09:33:22 · 265 阅读 · 0 评论 -
练习题22-验证回文串
原题目:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false思路:1.先用for循环遍历原字符串,用函数将字母和数字分别提取出来存放在另一个字符串2.用翻转函数将保存的字符串反转存放在另一个数组中3.返回两个字符串的比较代码(函数实现):class原创 2020-06-19 09:56:10 · 136 阅读 · 0 评论 -
练习题21-数组加一
原题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。思路:用for循环从尾部开始遍历,遍历到元素是9的,将那个位置的值变成0,遇到其他就退出循环。在外部判断最高位是原创 2020-06-18 23:31:04 · 181 阅读 · 0 评论 -
练习题20-最佳组合
原题目:给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。返回一对观光景点能取得的最高分。示例:输入:[8,1,5,2,6]输出:11解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11思路:从第一个开始遍历后面的元素,将第一个元素与后面原创 2020-06-17 23:12:36 · 179 阅读 · 0 评论 -
练习题19-爬楼梯问题
问题:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶思路:通过列出1到6的阶梯爬楼方法可以发现,这个问题满足斐波那契数列,公式为fac(n)=fac(n-1)+f原创 2020-06-13 11:26:19 · 664 阅读 · 0 评论 -
练习题18-strStr的实现
原题目:实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “bba”输出: -1当needle等于空字符串时,输出0思路:首先判断str2是否为空,为空返回0原创 2020-06-12 22:24:03 · 133 阅读 · 0 评论 -
练习题17-删除排序数组中的重复项
原题目:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 n原创 2020-06-07 10:31:37 · 135 阅读 · 0 评论 -
练习题16-移除数组元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,2,3,0,4,2]原创 2020-06-07 10:25:01 · 195 阅读 · 0 评论 -
练习题15-有效的括号
原题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true思路:首先判断字符串是原创 2020-06-06 12:18:09 · 126 阅读 · 0 评论 -
练习题14-罗马数字转数字
原题目:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。原创 2020-06-06 08:26:03 · 497 阅读 · 0 评论 -
练习题13-求数组中自身之外的乘积
原题目:给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 不要使用除法,且在 O(n) 时间复杂度内完成此题。思路:1.用for循环遍历数组中每个元素,在for循环中算出元素左边的乘积和2.同上,但是用for循环算出元素右边的乘积和代码: vector<int> prod原创 2020-06-04 13:57:02 · 150 阅读 · 0 评论 -
练习题12-外观数列
原题目「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。注意:整数序列中的每一项将表示为一原创 2020-06-03 10:23:06 · 143 阅读 · 0 评论 -
练习题11-求最长的公共字符串
原题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。思路:1.用另一个字符串变量存储公共的字符串2.如果输入字符串长度为0,返回空的字符串3.用for循环判断vector容器中谁是最小的字符串4.用两层for循环判断vector容器中不同字符串相同位置原创 2020-06-02 10:48:46 · 816 阅读 · 0 评论 -
练习题10-求和题目(难度加强)
原题目:求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45思路:1.使用求和公式sn=((n+1)*n)/2;但是题目要求不能使用乘除2.用递归进行判断n && (n += sumNums(n-1));return n;当n=0时,不符合,等式右边不进行相加,所以从0开始返回对应的相加值,能够得到结果原创 2020-06-02 09:01:55 · 401 阅读 · 0 评论 -
练习题9-糖果问题
原问题:拥有最多糖果的孩子给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。示例 1:输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,true,false,true]解释:孩子 1 有原创 2020-06-01 09:24:05 · 983 阅读 · 0 评论 -
练习题8-回文数
回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。思路:用while循环,在while循环内用取模运算取出个位,在将该数除10删去个位,当while循环判断到该数位.原创 2020-05-31 10:56:39 · 256 阅读 · 0 评论 -
练习题7-整数反转
原题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。思路:用while循环判断x是否为0,如果不为0将x/10,然后将x的个位用一个变量存储,用一个变量存储各位变量+之前变量*10的值原创 2020-05-30 12:56:38 · 225 阅读 · 0 评论 -
练习题6-反转字符串
原题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]思原创 2020-05-29 15:57:48 · 249 阅读 · 0 评论 -
练习题5-小偷问题(有动画演示过程)
原问题:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:原创 2020-05-29 11:21:13 · 1276 阅读 · 0 评论 -
练习题4-两数之和
原题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路:1.用for循环遍历第一个数和第二个数2.将两数相加再进行判断,将下标存入vector容器中。3.返回vector容器原创 2020-05-28 20:44:56 · 154 阅读 · 0 评论 -
练习题3-字符串解码
原题目:给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例:s = “3[a]2[bc]”, 返回 “aaabcbc”.s = “3[a2[c]原创 2020-05-28 20:24:58 · 533 阅读 · 0 评论 -
练习题2 -和可被 K 整除的子数组
原题目:给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]思路:**我们假设题目为A = [4,5,0], K = 5,让i从4遍历到最后,并且用5取余,则第一个取余的值为4,原创 2020-05-27 13:01:26 · 2818 阅读 · 0 评论 -
【练习题1】求方程ax2+bx+c=0的根,请编码实现
思路:用if判断b的平方-4ac的三种情况,从而来决定有几个根,如何输出根。#include<iostream>//#include<math>using namespace std;int main(){ int a, b, c,x,y,x1,x2; cin >> a; cin >> b; cin >> c; if (b*b - 4*a*c < 0) { printf("have not sqrt"); }原创 2020-05-24 15:16:50 · 989 阅读 · 0 评论