Leecode
力扣练题
炭烧懒羊羊
这个作者很懒,什么都没留下…
展开
-
字符串转整数
将前面步骤读入的这些数字转换为整数(即,"123" -> 123, "0032" -> 32)。第 2 步:"4193 with words"(当前没有读入字符,因为这里不存在 '-' 或者 '+')由于 "-42" 在范围 [-231, 231 - 1] 内,最终结果为 -42。第 2 步:"42"(当前没有读入字符,因为这里不存在 '-' 或者 '+')第 2 步:" -42"(读入 '-' 字符,所以结果应该是负数)第 1 步:"42"(当前没有读入字符,因为没有前导空格)...原创 2022-08-09 17:45:36 · 92 阅读 · 0 评论 -
验证回文串(双指针)
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。原创 2022-08-08 00:36:35 · 160 阅读 · 0 评论 -
字符串中的第一个唯一字符
给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引(下标)。如果不存在,则返回 -1。题目比较简单易懂,官方给出的思路是运用哈希表,哈希表学术不精,先拿数组做吧。输入: s = "loveleetcode"输入: s = "leetcode"输入: s = "aabb"......原创 2022-08-06 15:29:44 · 96 阅读 · 0 评论 -
有效的数独(哈希表的使用)(力扣)
建立一个三层的哈希表,一层用来检测行,一层用来检测列,一行用来检测块。写一个函数,对其进行列、行、块的遍历,若存在同一数值的其他地址存在,则返回false,否则返回true。而(0-9)/3会在(0-2)时等于0,(3-5)时等于1,(6-8)时等于2(很类似2进制)数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。之后再分别给(i/3)和(j/3)乘3可以得到初始位置。已知(0-9)%3会经历3个(0-3)的循环。由i/3和j/3可以得出(一共有9个范围)设n=3*(j/3)+a/3。...原创 2022-08-04 12:57:13 · 103 阅读 · 0 评论 -
两数相加(力扣)
给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。原创 2022-08-03 11:51:01 · 1718 阅读 · 0 评论 -
加一(非空数组)(力扣)
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:[1]......原创 2022-06-09 21:27:38 · 134 阅读 · 0 评论 -
两个数组的交集(初用哈希表)(力扣)
给你两个整数数组nums1和nums2,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]提示:1 <= nums1.length, nu......原创 2022-06-08 20:44:00 · 155 阅读 · 0 评论 -
只出现一次的数字(力扣)
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4题目好理解,受上一题的影响,我想着先排序再进行遍历,利用限制条件能找到目标数字,想法很好,但是运行不出来,可能是我基础功不扎实。看评论区都在说异或,就去学了一下异或的c语言,3^3=0;3^0=3;.原创 2022-06-07 19:29:11 · 46 阅读 · 0 评论 -
轮转数组(力扣)
解答题目时,第一次看评论收到错误指示,以为下标只需要一个j=(j+I)%numsSize就可以解决问题,为了应用这个式子,开辟了一个新的数组(从这个时候就已经不符合题意了),新的数组长度未知,学习了定义未知长度的数组:int* num;num = (int *)malloc(numsSize* sizeof(int));得到的代码是:void rotate(int* nums, int numsSize, int k){ int i,j; int* num; k=k%............原创 2022-06-07 19:17:26 · 94 阅读 · 1 评论 -
反转字符串(指针)(力扣)
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。极少见的简单题目,与之前的一个题目叫移动0好像差不多,都是运用双指针,相较之下此题更加简单。编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。输入:s = ["h","e","l","l","o"]输出:["o","l","l","e","h"]...原创 2022-08-05 16:06:26 · 179 阅读 · 0 评论 -
移动0(双指针的使用)(力扣)
给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。示例 1:输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]示例 2:输入: nums = [0]输出: [0]提示:1 <= nums.length <= 104 -231<= nums[i] <= 231- 1题目好理解,如果没有原地操作这个要求的话........原创 2022-06-10 18:48:06 · 107 阅读 · 0 评论 -
两数之和(力扣)
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回他们的数组下标。原创 2022-08-02 14:00:49 · 46 阅读 · 0 评论 -
存在重复元素(力扣)
给你一个整数数组nums。如果任一值在数组中出现至少两次,返回true;如果数组中每个元素互不相同,返回false。示例 1:输入:nums = [1,2,3,1]输出:true示例 2:输入:nums = [1,2,3,4]输出:false示例3:输入:nums = [1,1,1,3,3,4,3,2,4,2]输出:truebool函数默认为判断true与false的函数。看到这几个题觉得直接内外双for循环比较就行了,写了一下运行不...........原创 2022-06-07 19:45:52 · 88 阅读 · 0 评论