随笔分类 - LeetCode
摘要:题目: 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1:
阅读全文
摘要:题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 提示: 链表中节点的数目范围
阅读全文
摘要:题目: 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给定 n ,请计算 F(n) 。 示例
阅读全文
摘要:题目: 给你一个仅由小写英文字母组成的字符串 s 。在一步操作中,你可以完成以下行为: 选择 s 的任一非空子字符串,可能是整个字符串,接着将字符串中的每一个字符替换为英文字母表中的前一个字符。例如,'b' 用 'a' 替换,'a' 用 'z' 替换。 返回执行上述操作 恰好一次 后可以获得的 字典
阅读全文
摘要:题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [
阅读全文
摘要:题目: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶。 1 阶 + 1 阶 2 阶 示例 2: 输入:n = 3 输出:3 解释:有三种方法可以爬到楼顶。
阅读全文
摘要:(1)思路 动态规划 (2)解题步骤 定义状态: dp[i] 表示第 i 个斐波那契数 状态转移方程: 根据斐波那契数列的定义,有: dp[i] = dp[i-1] + dp[i-2] 初始化: 由初始条件知道: dp[0] = 0 dp[1] = 1 填表: 使用状态转移方程,从 2 到 n 依次
阅读全文
摘要:(1)思路 记录每个非0数组元素前面有多少个0,就将该元素向前移动多少位,并且记录数组一共有多少个0元素,全部非0元素移动完后,再在数组最后补上0即可。 (2)复杂度 时间复杂度:O(n) 空间复杂度:O(1) (3)代码 class Solution { public void moveZeroe
阅读全文
摘要:(1)解题思路 step1 用 malloc 申请一个节点赋值给合并后的新链表 newList,将该节点作为 newList 的头结点。(应用头结点的目的是使得用“尾插法”合并链表时的操作保持一致)定义一个 rear 指针,指向 newList 的表尾。 step2 当 list1 和 list2
阅读全文
摘要:(1)解题思路 step1 求出字符串s的长度,定义一个顺序栈并初始化。 step2 从左往右扫描字符串s: 当扫描到“左括号”(即'('、'['、'{'这三种),则将其入栈; 否则,当扫描到“右括号”且栈为空时,则括号匹配失败(“右括号”为单身); 而当扫描到“右括号”且栈不为空时,出栈一个元素,
阅读全文
摘要:(1)解题思路 以第一个字符串作为比较的标准,采用两层循环进行纵向对比,最后用字符串数组的第一个字符串保存最长公共前缀。 (2)代码 char * longestCommonPrefix(char ** strs, int strsSize){ if(strsSize == 0){ return "
阅读全文
摘要:(1)解题思路 step1:求出字符串s的长度n。定义一个变量sum并初始化为0,用来保存转换成整数后的结果。定义一个长度为n的辅助数组temp,用来保存字符串s中的每个字符对应的数值。 step2:利用for循环遍历字符串s中的每个字符。循环过程中,利用switch将字符串s中的每个字符分别转换为
阅读全文
摘要:(1)解题思路 方法1: step1 由示例1和2可以知道,x 小于0或 x 不为0且最后一位为0时,x 肯定不是回文数,返回 false。 step2 创建一个数组 array,将 x 的每一位数保存到数组中,最后用 for 循坏判断 x 是否为回文数。 方法2: step1 由示例1和2可以知道
阅读全文
摘要:(1)解题思路 暴力解法:用两层for循环遍历数组,注意一下循环的边界取值问题,然后用if语句判断,若找到符合题目条件的两个数,则用malloc函数申请内存空间,将符合条件的两个数的数组下标保存到结果数组中,若两层循环后找不到题目要求的两个数,则返回NULL。 (2)代码 /** * Note: T
阅读全文

浙公网安备 33010602011771号