刷题!!!
文章平均质量分 56
菠萝印象威
保持学习的习惯,保持乐观的态度。
展开
-
LeetCode刷题19--x的平方根(二分法)
题目描述实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。解题思路int SqrtTest(int n){ int left=0; int right=n; int res; while(left<=right) { in原创 2021-03-22 23:27:32 · 249 阅读 · 1 评论 -
LeetCode刷题18--二进制求和
题目描述给你两个二进制字符串,返回它们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例:输入: a = “11”, b = “1”输出: “100”示例:输入: a = “1010”, b = “1011”输出: “10101”提示:每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。1 <= a.length, b.length <= 10^4字符串如果不是 “0” ,就都不含前导零。解题思路string add(string s1,string s2原创 2021-02-08 23:34:29 · 174 阅读 · 0 评论 -
LeetCode刷题17--加一
题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例:输入:digits = [0]输出:[1]解题思路vector<int>A原创 2021-02-02 22:57:29 · 155 阅读 · 1 评论 -
LeetCode刷题15--外观数列(普通循环方法实现)
题目描述给定一个正整数 n ,输出外观数列的第 n 项。外观数列是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1 12 113 214 12115 111221原创 2021-02-01 13:46:39 · 188 阅读 · 0 评论 -
LeetCode刷题16--最后一个单词的长度
题目描述给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。单词是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 :输入:s = “Hello World”输出:5示例:输入:s = " "输出:01 <= s.length <= 104s 仅有英文字母和空格 ’ ’ 组成解题思路int LastWordLength(string s){ int count=0; for(int i=原创 2021-02-01 23:59:24 · 600 阅读 · 2 评论 -
LeetCode刷题(14)--最大子序和
题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解题思路int max(int a[],int n){ int max=INT_MIN; for(int i=0;i<n;i++) { int sum=0; for(int j=i;j<n;j++) { sum+=a[j原创 2021-01-31 22:58:03 · 183 阅读 · 1 评论 -
LeetCode刷题(13)--外观数列(递归算法实现)
题目描述给定一个正整数 n ,输出外观数列的第 n 项。外观数列是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1 12 113 214 12115 111221第一项为1第二项为11表示前一项有1个1第三项为21,表示前一项有2个1第四项为1211,表示前一项有1个2和1个1第五项为111221,表示前一项有1个1,1个2和2个1示例:输入:n = 1输出:“1”示例:输入:n = 4输出:“1211”1 <= n原创 2021-01-31 20:57:47 · 392 阅读 · 0 评论 -
LeetCode刷题(12)--搜索插入位置
题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例:输入: [1,3,5,6], 5输出: 2示例:输入: [1,3,5,6], 2输出: 1示例:输入: [1,3,5,6], 7输出: 4示例:输入: [1,3,5,6], 0输出: 0解题思路int Search(int a[],int n,int val){ int i; for(i=0;i<n;i+原创 2021-01-28 23:50:12 · 152 阅读 · 1 评论 -
LeetCode刷题(11)--实现strStr()
题目描述给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例:输入: haystack = “hello”, needle = “ll”输出: 2示例:输入: haystack = “aaaaa”, needle = “bba”输出: -1解题思路int strStr(string haystack,string needle){ string s; i原创 2021-01-28 23:31:32 · 165 阅读 · 0 评论 -
LeetCode刷题(10)--移除元素
题目描述给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。示例:给定 nums = [0,1,2,2,3,0,4,2], val = 2,函数应该返回新的长度 5, 并原创 2021-01-28 23:14:54 · 149 阅读 · 1 评论 -
LeetCode刷题(9)--删除排序数组中的重复项
题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nums 的前五个元原创 2021-01-28 00:04:38 · 278 阅读 · 0 评论 -
LeetCode刷题(8)--合并两个有序链表(普通方法实现)
前面已经使用递归算法实现合并两个有序链表:递归实现合并两个有序链表。本篇文章介绍另一种方法来实现。其它函数不变,只需修改合并链表的函数。ListNode* MergeTList1(ListNode* l1,ListNode* l2){ //判断两个链表是否为空,如果其中一个为空,那么合并的链表是另一个链表 if(l1==NULL) { return l2; } if(l2==NULL) { return l1; } //定义一个节点用来获取两个链表中头节点较小的一个 Li原创 2021-01-17 20:29:38 · 282 阅读 · 0 评论 -
LeetCode刷题(7)--合并两个有序链表(递归算法实现)
题目描述将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]输入:l1 = [], l2 = []输出:[]输入:l1 = [], l2 = [0]输出:[0]解题思路// A code blockvar foo = 'bar';...原创 2021-01-16 21:05:58 · 467 阅读 · 0 评论 -
LeetCode刷题(6)--有效的括号
题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例:输入: “()”输出: true输入: “()[]{}”输出: true输入: “([)]”输出: false输入: “{[]}”输出: true解题思路首先,因为括号是成对出现的,所以,字符串的长度必须是2的倍数,如果不是直接return false。其原创 2021-01-10 21:10:13 · 256 阅读 · 1 评论 -
LeetCode刷题(5)--最长公共前缀详解
题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。解题思路方法一将字符串数组首元素的每一个字符和其它元素的每一个字符比较,若出现不同,则返回之前首元素中相同的字符串。string longestPrefix(vector<string>&原创 2021-01-09 21:49:32 · 491 阅读 · 0 评论 -
LeetCode刷题(4)--罗马数字转整数
题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。对应值如下表:罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:I原创 2021-01-08 21:58:25 · 388 阅读 · 0 评论 -
LeetCode刷题(3)--回文数
题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 :输入: 121输出: true输入: -121输出: false输入: 10输出: false解题思路方法一:将输入的整数转换为字符串,然后对字符串进行反转位置元素判断,循环数组大小一半次数,如果发现不一致的情况则返回false,循环结束返回true。假设输入1221,那么将整数121转换为字符串并存储,再对字符串1221进行反转位置比较,数组第一个元素和数组最后一个元素比较是否相原创 2021-01-04 22:15:11 · 288 阅读 · 0 评论 -
LeetCode刷题(2)--整数反转
题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例:输入123,输出321。输入-123,输出-321。输入120,输出21。解题思路把最后的一个数字相继的提出然后通过依次的乘十累加还原逆序数。代码演示:#include<math.h>int reverse(int x){ long long r=0; while(x!=0){ r=r*10+x%10; x/=10; } if(r>pow(2.0,31)||r<-po原创 2020-12-30 22:19:56 · 363 阅读 · 0 评论 -
LeetCode刷题(1)--两数之和最详细解答
本篇文章将开启刷题系列,通过刷题希望自己可以积累更多解题方法。一.前言今天开始使用LeetCode刷题,工作之余,能够用手机刷题也是很方便的。原本以为刷题之路很轻松,但是使用了App版的LeetCode却发现有一点不太方便,第一,App版本无法提交代码,由于工作原因,公司使用内网,想要使用电脑版刷题不太方便,而将手机浏览器设置为电脑版的操作更加困难。第二,这也是我很苦恼的一个地方,我所有写的文章,绝大部分都是我自己进行编译运行后才会演示出来,而App版却省略了测试代码,很不习惯,最重要的演示过程被Ap原创 2020-12-29 22:53:59 · 596 阅读 · 0 评论