自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 二分法自我总结

文章目录前言一、二分法的模板?二 对应题目1.蓝桥杯【打包】1.蓝桥杯【和谐宿舍】总结前言当题目答案是一个值,且在固定范围内的话,就可以考虑二分法求解。一、二分法的模板?bool check(int mid){ return ;//返回true或者false;}int l = ma , r = sum; while (l<r){ int mid = (r + l) /2; if(check(mid)){//根据实际调整

2022-03-25 21:47:25 166

原创 LeetCode(32.最长有效括号)

题目给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”示例 2:输入:s = “)()())”输出:4解释:最长有效括号子串是 “()()”示例 3:输入:s = “”输出:0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-valid-parentheses著作权归领扣网络所有。商业转载请联系

2021-03-15 23:20:26 157

原创 LeetCode(15.三数之和)

题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]题解一开始想的也是利用排序之后判断,奈何自己太菜,用的从0的地方向两边扩展,这里

2021-01-31 22:22:46 115

原创 打印二叉树

概述该程序是根据先序序列打印二叉树,如果先序遍历过程中下一个结点为空结点则用空格表示。程序源码在最后。实现思路首先想到要把二叉树打印出来,最简单的表现形式是把一个层序遍历(代码中的tree字符串)的二叉树打印;首先实现这个功能(程序中print_BiTree函数中init_str(str, 0, 0, strlen(str));之后的部分),实现这个功能需要首先对布局有一定的判断,即如何能将任意深度的二叉树都堆成的摆在一个平面上;例如:不管是打印深度3还是深度5都保证整个图形的对称。2.

2021-01-16 23:20:59 3413

原创 LeetCode(14.最长公共前缀)

题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。提示:0 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成解法欣赏1(暴力法)

2021-01-13 21:36:04 103

原创 LeetCode(13.罗马数字转整数)

题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通

2020-11-26 17:25:59 74

原创 LeetCode(12.整形转罗马数字)—贪心法优化,暴力法

题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通

2020-11-24 10:41:14 140

原创 LeetCode(11.盛最多水的容器)—双指针

题目给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例 2:输入:heig

2020-11-23 21:59:42 103

原创 LeetCode(10.正则表达式匹配[困难])—递归,DP

题目附上题目连接给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配 “aa” 整个字符串。示例 2:输入

2020-10-06 11:37:33 329

原创 LeetCode(9.回文数[简单])

题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数转为字符串来解决这个问题吗?题目解析及优化如果不转化为字符串的话,两个数字可以通过判断是否相等去判

2020-10-05 20:31:11 122

原创 LeetCode(8.字符串转换整数[中等])(顺带埋一个坑:自动机)

题目请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中的第一个非空格字符不是一个有效

2020-10-04 15:19:22 148

原创 LeetCode(7.整数转换[简单])—防溢出

题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2的31次, 2的31次 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。题目解析及优化这道题的思路简单,没什么好说的,直接上代码:class Solution {public: int r

2020-10-01 11:25:45 269

原创 LeetCode(6.Z字形变换[中等])

题目将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入: s = “LEETCODEISHIRING”, numRows = 3输出: “LCIRETOE

2020-10-01 10:46:10 84

原创 LeetCode(5.最长回文子串[中等])DP,中心扩展,Manacher

题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”题目解析及优化没有什么是暴力法解决不了的;找出每个子串,判断每个字串是否为回文字串,代码就不贴了,大家自行体会时间复杂度是O(n3)动态规划其实在暴力法的分析过程中,可以发现有很多子问题是重复计算的,如判断2到6是否为回文串,需要先判断3到5是否为回文

2020-09-26 21:11:18 125

原创 LeetCode(4.寻找两个有序数组的中位数[困难])—二分法

题目给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5题目解析及优化如果不看时间复杂度的话,这是以到比较简单的题,常见的做法

2020-09-25 18:03:04 279 2

原创 LeetCode(3.无重复字符的最长子串[中等])—滑动窗口(双指针)

题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。题目解析及

2020-09-24 17:53:31 123

原创 LeetCode(2.两数相加[中等])—链表

LeetCode 不只是题解(2.两数相加[中等])题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807题目解析及

2020-09-24 09:02:24 203

原创 LeetCode(1.两数之和[简单])—双指针,哈希表

LeetCode 不只是题解(1.两数之和[简单])题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]题目解析及优化暴力解决法暴力解决法很好理解,逐步遍历所有的数组组合,找出

2020-09-23 09:36:11 171

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除