leetcode
CHEN_XU_LING
这个作者很懒,什么都没留下…
展开
-
leedcode 2-两数相加(链表)
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:原创 2021-05-17 21:32:48 · 90 阅读 · 0 评论 -
Leetcode_167刷题笔记
1 原题目Leetcode_1672 题目大意给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:_返回的下标值(index1 和 index2)不是从零开始的。_你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。3 题目分析4 基础知识4.1 C的语法数组,双指针4.2数据结构无4.3算法二分查找,暴力5 解法5.1 解法1原创 2020-07-10 20:59:54 · 150 阅读 · 0 评论 -
Leetcode_258刷题笔记
1 原题目Leetcode_2582 题目大意给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。3 题目分析4 基础知识4.1 C的语法If语句4.2数据结构无4.3算法递归5 解法5.1 解法1递归出口条件:各位和小于10时(为单数)直接输出递归操作:计算num的各位和int addDigits(int num){ if(num<10) return num; int ans=0; while(num!=0){原创 2020-07-10 20:44:40 · 191 阅读 · 0 评论 -
Leetcode_121刷题笔记
1 原题目Leetcode_1212 题目大意给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。3 题目分析示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于原创 2020-07-09 22:51:28 · 128 阅读 · 0 评论 -
Leetcode_287刷题笔记
1 原题目Leetcode_2872 题目大意给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。3 题目分析示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一原创 2020-07-09 22:19:06 · 113 阅读 · 0 评论 -
Leetcode_217刷题笔记
1 原题目Leetcode_2172 题目大意给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。3 题目分析示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true4 基础知识4.1 C的语法数组4.2数据结构无4.3算法哈希表5 解法5.1 解原创 2020-07-09 22:17:12 · 126 阅读 · 0 评论 -
Leetcode_283刷题笔记
1 原题目Leetcode_2832 题目大意给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。3 题目分析输入: [0,1,0,3,12]输出: [1,3,12,0,0]4 基础知识数组,双指针4.1 C的语法数组的遍历,开辟新数组存储新数据4.2数据结构无4.3算法无5 解法5.1 解法1定义两个变量,用其中一个变量去遍历整个数组;将非0元素存储在以另外一个变量为下标的数组;如果两个变量的值不相等,将用于遍历整个数组的变量原创 2020-07-08 23:37:03 · 153 阅读 · 0 评论 -
Leetcode_238刷题笔记
1 原题目Leetcode_2382 题目大意给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。3 题目分析4 基础知识数组4.1 C的语法For循环4.2数据结构无4.3算法无5 解法5.1 解法1 乘积=当前数左边数的乘积*右边数的乘积int* productExceptSelf(int* a, int n, int* returnSiz原创 2020-07-08 23:24:37 · 176 阅读 · 0 评论 -
LeetCode_131刷题笔记
1原题目LeetCode_1312 题目大意给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。3.题目分析4基础知识回溯算法 4.1C的语法 4.2数据结构 4.3算法回溯算法(解法1)这里用到了DFS解决问题的思路, 同样这样的找出所有的可能性,我们使用了递归的思想。这里首先有一个辅助的函数 用于判断一个字符串是否是回文。然后在find_results中去找所有的可能性。应该明白在每一步都可以判断中间结果是否为合法结果,这里我们采原创 2020-07-07 22:49:16 · 209 阅读 · 0 评论 -
LeetCode_3刷题笔记
1原题目LeetCode_32 题目大意给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。3.题目分析4基础知识哈希,双指针,字符串4.1C的语法数组用一个足够长的数组判断是否重复,用窗口判断子串长度,时间复杂度为O(n)4.2数据结构4.3算法哈希(解法1)用start储存子串起始下标,每当发现重复字符或字符串遍历完成就计算一遍当前子串长度5解法解法1:int lengthOfLongestSubstring(char * s){ int i, j原创 2020-07-07 22:12:40 · 215 阅读 · 0 评论 -
LeetCode_392刷题笔记
1原题目LeetCode_3922 题目大意给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。3.题目分析4基础知识贪心算法,二分查找,双指针4.1C的语法4.2数据结原创 2020-07-07 21:48:48 · 119 阅读 · 0 评论 -
LeetCode_383刷题笔记
1原题目LeetCode_3832 题目大意给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)3题目分析4基础知识字符串4.1C的语法(解法2)用一个数组p保存magazine中每原创 2020-07-07 20:51:54 · 153 阅读 · 0 评论 -
LeetCode_387刷题笔记
1原题目LeetCode_3872 题目大意给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。3.题目分析4基础知识哈希表,字符串4.1C的语法数组(解法1)两个数组,一个记录字母出现次数,一个记录字母第一次出现的位置,遍历次数数组,次数为1的多个字母中,取最先出现的即索引值最小的4.2数据结构4.3算法哈希(解法2)5解法(1)数组int firstUniqChar(char * s) { int count[26]={0};原创 2020-07-07 20:14:11 · 111 阅读 · 0 评论 -
LeetCode_242刷题笔记
1原题目LeetCode_2422 题目大意给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词,也就是说s字符串中有没有包含t3.题目分析4基础知识4.1C的语法(2)对s和t进行排序,若字母数量一样,排序后结果应该一样4.2数据结构无4.3算法哈希(1) 构建一个数组,索引0-25分别对应26个字母,分别遍历s和t两个string,第一轮对应字母出现一次++,第二轮出现一次–,两个数组如果完全相等,则数组中所有元素的值应为0,5解法(1)c++ 哈原创 2020-07-07 20:05:48 · 150 阅读 · 0 评论 -
LeetCode_22刷题笔记
1原题目LeetCode_222 题目大意数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。3.题目分析4基础知识字符串,回溯算法4.1C的语法无4.2数据结构深度优先遍历,广度优先遍历4.3算法5解法DFS和BFSclass Solution {public: //DFS void generateParenthesis_(int left,int right,vector<string>&原创 2020-07-07 19:48:09 · 87 阅读 · 0 评论 -
LeetCode_344刷题笔记
1原题目LeetCode_3442 题目大意编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。3.题目分析4基础知识数组,指针,递归循环4.1C的语法利用for循环一个个遍历交换利用双指针,一个指向头一个指向尾,一个个交换直到两个指针到一起4.2数据结构无4.3算法无5解法原创 2020-07-07 13:19:30 · 247 阅读 · 0 评论 -
LeetCode_350刷题笔记
1原题目LeetCode_3502 题目大意给定两个数组,编写一个函数来计算它们的交集。3.题目分析1. 将两个数组进行排序,随后用双指针顺序查找相同的元素时间复杂度O(max(nlogn, mlogm, n+m)),空间复杂度O(1) (n,m分别为两个数组的长度)如果是进阶问题一中已排序的数组,则只需O(n)的时间复杂度2. 第一轮循环让map中的value值存储nums1中对应key值的元素数量,第二轮循环遍历num2中的元素,如果map中此时key为i对应的value大于等于1,即为交集原创 2020-07-05 22:47:53 · 130 阅读 · 0 评论 -
LeetCode_125刷题笔记
1原题目LeetCode_1252 题目大意给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。3.题目分析申请一个新的字符串,大小和给定的一样大,然后将之前的字符串里的数字和字母给新的字符串然后依次比较前面和后面的字符4基础知识字符串4.1C的语法For循环加if判断4.2数据结构无4.3算法无5解法bool isPalindrome(char * s){ int str_len = strlen(s); char *new_s原创 2020-07-05 22:36:36 · 163 阅读 · 0 评论 -
LeetCode_241刷题笔记
1原题目给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。2 题目大意算加了括号后有几种结果3.题目分析1.先把输入字符串中的数字提取到数组inData中,运算符存放在数组inCal中2.数组res[i][j] 表示从i到j的组合个数和结果3.前 n 个组合 = (前 n - 1 个组合 * 后 1 个组合) + (前 n-2 个组合 * 后2个组合) + … + (前 1 个组合 *原创 2020-07-05 21:56:47 · 199 阅读 · 0 评论 -
LeetCode_13 刷题笔记
1原题目2 题目大意给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。3.题目分析例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只原创 2020-07-05 21:26:23 · 106 阅读 · 0 评论 -
LeetCode_171 刷题笔记
**LeetCode_171 刷题笔记**1 原题目Given the name of a column in a Excel Table, return its corresponding column number.2 题目大意给定一个Excel表格中的列名称,返回其相应的列序号。3 题目分析因为一共是26个字母,所以就是一个二十六进制转十进制的题目4 基础知识进制之间的换算4.1 C的语法1.POW(x,y)就是#include<math.h>...原创 2020-07-05 20:49:07 · 155 阅读 · 0 评论