刷题笔记
leetcode 和 剑指offer
冀州少主
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指offer刷题笔记
传送门:https://github.com/JamesSUDO/toward-offer本人在牛客网剑指offer专题的刷题记录,包括有《剑指offer》的刷题笔记和源码,每个题都有对应的md文件和cpp文件。原创 2021-05-01 11:38:35 · 241 阅读 · 0 评论 -
剑指offer 45:把数组排成最小的数
把数组排成最小的数题目描述我的解法1:暴力法我的解法2:自定义比较规则+排序题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。我的解法1:暴力法直接遍历所有可能的结果,找出最小值。具体流程是先用二维数组储存所有可能的排列结果,然后遍历所有结果找出最小值,最后...原创 2020-05-03 20:46:35 · 210 阅读 · 0 评论 -
Leetcode 53:最大子序和
目录题目描述我的解法:双层循环暴力法动态规划分治算法贪心算法题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。...原创 2020-03-20 12:44:55 · 258 阅读 · 2 评论 -
Leetcode 121:买卖股票的最佳时机
目录题目描述我的解法:两层迭代器循环的暴力法运行超时正确解法:一次遍历,记录每次循环的最小值题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = ...原创 2020-03-18 18:03:46 · 173 阅读 · 0 评论 -
Leetcode 70:爬楼梯
Leetcode 70:爬楼梯题目描述我的解法:暴力法运行超时其它解法1:对暴力法的优化其它解法2:动态规划其它解法3:斐波那契数其它解法4:直接套斐波那契通项公式题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释:有两种方法可以爬到楼顶。1....原创 2020-03-16 20:43:38 · 207 阅读 · 0 评论 -
Leetcode 88:合并两个有序数组
Leetcode 88:合并两个有序数组题目描述我的解法其它解法1:直接赋值,不用push_back其它解法2:对解法1的简化其它解法3-5:用到vector自带的api题目描述给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设...原创 2020-03-13 17:59:30 · 325 阅读 · 0 评论 -
Leetcode 217:存在重复元素
Leetcode 217:存在重复元素题目描述我的代码(暴力法运行超时)别人家的题解解法1:题目描述定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3...原创 2019-05-28 22:26:11 · 220 阅读 · 0 评论 -
Leetcode 136: 只出现一次的数字
Leetcode 136: 只出现一次的数字题目描述我的代码解法1:先进行sort排序解法2:利用map(但是我的思路不对,代码见下)解法2:正确地使用map(运行时间和占用内存是硬伤)解法3:用set解法4: 黑科技——异或题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外...原创 2019-07-02 21:09:39 · 198 阅读 · 0 评论 -
Leetcode 350: 两个数组的交集 II
Leetcode 350: 两个数组的交集 II题目描述我的方法和改进(利用map)我的方法改进题目描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素...原创 2019-07-04 21:02:25 · 220 阅读 · 0 评论 -
Leetcode 66: 加一
Leetcode 66: 加一题目描述分析我的代码(运行时间秒杀百分之九十多的解答提交)题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: ...原创 2019-07-05 10:13:41 · 158 阅读 · 0 评论 -
Leetcode 283:移动零
Leetcode 283:移动零题目描述我的解法(官方题解没有)官方解法1:空间局部优化官方解法2:空间最优,操作局部优化(双指针)官方解法3:最优解题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次...原创 2019-07-05 15:43:09 · 211 阅读 · 0 评论 -
Leetcode 36:有效的数独
Leetcode 36:有效的数独题目描述我的解法:利用set特性,将判断分为三个步骤别人家的解法题目描述判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数...原创 2019-07-07 09:55:48 · 233 阅读 · 0 评论 -
Leetcode 242:有效的字母异位词
Leetcode 242:有效的字母异位词 题目描述我的解法:用map思考与收获以数组代替map的解法题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只...原创 2019-07-09 21:37:05 · 191 阅读 · 0 评论 -
Leetcode 125:验证回文串
Leetcode 125:验证回文串题目描述我的解答(超出时间限制)别人家的解法分析题目描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false我...原创 2019-07-13 10:16:27 · 239 阅读 · 0 评论 -
Leetcode 28:实现strStr()
@[TOC](Leetcode 28:实现strStr())题目描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输...原创 2019-09-17 11:22:47 · 178 阅读 · 0 评论 -
Leetcode 38:报数
Leetcode 38:报数题目描述我的解法递归解法题目描述报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (...原创 2019-10-15 14:09:01 · 219 阅读 · 0 评论 -
Leetcode 237:删除链表中的节点
Leetcode 237:删除链表中的节点题目描述解法:替身攻击法我的思考题目描述请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:4->5->1->9示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表...原创 2019-10-17 11:26:21 · 219 阅读 · 0 评论 -
Leetcode 206:反转链表
Leetcode 206:反转链表题目描述我的解法一:用map做临时存储我的解法二:后值前插法(我起的名字)迭代法题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?我的解法一:用map做临时...原创 2019-11-04 15:27:13 · 185 阅读 · 0 评论 -
Leetcode 234:回文链表
Leetcode 234:回文链表题目描述我的解法利用stack先入后出快慢指针+stack题目描述请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?我的解法利用map,做两次循环,第一次循环把链表的va...原创 2020-01-03 10:56:37 · 203 阅读 · 0 评论 -
Leetcode 104:二叉树的最大深度
Leetcode 104:二叉树的最大深度题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。说明此题与二叉树的遍历有关,关于二...原创 2020-01-12 21:54:56 · 223 阅读 · 0 评论 -
Leetcode 98:验证二叉搜索树
Leetcode 98:验证二叉搜索树题目描述我的解法题目描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \...原创 2020-02-07 10:48:55 · 271 阅读 · 0 评论 -
Leetcode101:对称二叉树
Leetcode101:对称二叉树题目描述我的解法其它解法1:递归其它解法2:利用队列的非递归遍历题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ ...原创 2020-02-10 11:01:57 · 216 阅读 · 1 评论 -
Leetcode 102:二叉树的层次遍历
Leetcode 102:二叉树的层次遍历题目描述我的解法:前序遍历思想题目描述给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]...原创 2020-02-14 11:56:29 · 291 阅读 · 0 评论 -
Leetcode 108:将有序数组转换为二叉搜索树
Leetcode 108:将有序数组转换为二叉搜索树题目描述解法1:创建辅助函数迭代解法2:原函数迭代题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面...原创 2020-03-12 12:46:22 · 301 阅读 · 0 评论
分享