自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode 226 翻转二叉树(递归)

https://leetcode-cn.com/problems/invert-binary-tree/很典型的一个递归,翻转嘛,就是把每一个节点的左右子树翻转一下就做到了整棵树的翻转代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x)

2020-05-31 22:20:52 94

原创 leetcode 215 数组中第K个最大的数 (小根堆)

https://leetcode-cn.com/problems/kth-largest-element-in-an-array/题目在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例输入: [3,2,1,5,6,4] 和 k = 2输出: 5输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4额,感觉有点混了,比直接排序好不到哪里去,还比排序慢了。那些大佬们的高端思路tql思路维护一个

2020-05-30 18:36:27 359

原创 leetcode 224 基本计算器(栈,易懂方法)

https://leetcode-cn.com/problems/basic-calculator/题目实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。示例输入" 2-1 + 2 "输出3输入"(1+(4+5+2)-3)+(6+8)"输出23一开始想过每次碰到括号就把括号的算出来再放到栈里面,但是写了一遍之后发现有各种问题。。思路1.因为数字可能不止一位,所以while(is

2020-05-29 20:12:02 203

原创 leetcode 155 最小栈

https://leetcode-cn.com/problems/min-stack/水题,因为要在常数时间获取最小值,再开一个栈来存放相对应的最小值即可代码class MinStack {private: stack <int> s; stack <int> ans;public: /** initialize your data structure here. */ MinStack() { }

2020-05-28 22:53:13 134

原创 leetcode 32 最长有效括号 (动态规划)

https://leetcode-cn.com/problems/longest-valid-parentheses/题目:给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例:输入:"(()"输出:2最长有效括号子串为 “()”输入:")()())"输出:4最长有效括号子串为 “()()”思路最先开始写了个暴力,复杂度O(n^3),想着办法优化了一点也没有办法通过。以下为动规思路:dp[i] 为以 i 为终点(包含 i )的区间

2020-05-27 20:49:03 181

原创 leetcode 20 有效的括号 (栈)

https://leetcode-cn.com/problems/valid-parentheses/题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例输入"()[]{}"输出true输入"([)]"输出false输入"{[]}"输出true思路 很单纯的括号匹配问题,利用栈来解决。可以

2020-05-26 19:42:43 99

原创 leetcode 945 使数组唯一的最小增量 (排序方法)

https://leetcode-cn.com/problems/minimum-increment-to-make-array-unique/ 题目给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例1输入[1,2,2]输出1解释经过一次 move 操作,数组将变为 [1, 2, 3]。示例2输入[3,2,1,2,1,7]输出6解释经过 6 次 move 操作,数组将变为 [3, 4,

2020-05-25 23:25:15 123

原创 leetcode 73 矩阵置零 (O(1) 空间)

https://leetcode-cn.com/problems/set-matrix-zeroes/题目给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例1输入[[1,1,1],[1,0,1],1,1,1]] 输出[[1,0,1],[0,0,0],[1,0,1]]示例2输入[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出[[0,0,0,0],[0,4,5,0],[0,3,1,0]]O(M * N

2020-05-24 18:46:02 124

原创 leetcode 54 螺旋矩阵(易懂方法)

https://leetcode-cn.com/problems/spiral-matrix/ 题目给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出[1,2,3,6,9,8,7,4,5]示例 2:输入[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]输出[1,2,3,4,8

2020-05-23 19:56:38 233

原创 leetcode 43 字符串相乘 (即高精乘)

https://leetcode-cn.com/problems/multiply-strings/直接模拟竖式乘法,就像我们在草稿纸上那样计算,每次取出一个数字与另一个字符串相乘,ans加上得到的新字符串,除了第一次乘,后面的都要根据次数补0。本方法速度不够快class Solution {public: string Add(string pre, string ns) { string res; int jw = 0; for (in

2020-05-22 21:58:40 131

原创 leetcode 763 划分字母区间

https://leetcode-cn.com/problems/partition-labels/首先统计出每个字母最后出现的位置tail[i],然后按顺序遍历字符串遍历到 i 时,取出这个字母的区间 (L,R),pos = i + 1,L = i,不变,pos往后移,一直更新R,R = max(R, tail[s[pos] - ‘a’],也就是,如果当前区间(L,R)中某个字母的最末尾不在该区间中,就更新区间,直到当前区间全包在里面,然后更新遍历到的位置就可class Solution {p

2020-05-21 22:47:20 184

原创 leetcode 6 Z字型变换

https://leetcode-cn.com/problems/zigzag-conversion/找规律,将Z字型分割,例如这样就很容易看出来规律,先建numRows个字符串代表每一行的字符串每一次我们只要知道第一行的应当插入的字符下标,自然就能知道下面多行的下标,而第一行前一个字符和后一个字符的下标的差值很容易看出来,就是2 x (numRows - 1),知道了第一行下一个应当插入的字符下标,反着往前推就能得到其他行应得的下标知道了每次该插入的字符下标,每次判断下标是否在原字符串中即可

2020-05-20 22:22:35 117

原创 leetcode 56 合并区间

https://leetcode-cn.com/problems/merge-intervals/写得很死脑筋,代码冗长而且慢。先排序,按照每个区间头递增排,相同的尾小的放前面bool cmp(const vector<int> &a, const vector<int> &b) { if (a[0] != b[0]) return a[0] < b[0]; else return a.back() < b.bac

2020-05-20 21:44:44 115

原创 leetcode 876 链表的中间节点(水题,还是快慢指针)

https://leetcode-cn.com/problems/middle-of-the-linked-list/显然的快慢指针,也许有更好的做法,因为速度不够快,待我看看大佬们的高速范例/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * };

2020-05-19 22:09:33 98

原创 leetcode 202 快乐数 (快慢指针)

https://leetcode-cn.com/problems/happy-number/同循环链表类似,还是快慢指针如果会无限循环,快的会追上慢的,否则就是快乐数while(1)是因为要么肯定追上了,要么就是快乐数总会跳出来class Solution {public: int trans(int n) { int res = 0; while (n) { res += (n % 10)*(n % 10);

2020-05-19 21:47:29 140

原创 leetcode 141 环形链表

https://leetcode-cn.com/problems/linked-list-cycle/由于之前学链表的时候在探索部分做过这个题,有印象是快慢指针,所以很快写出来了。指针p一次走一步,指针q一次走两步,如果有环,快的会绕一圈追 上慢的,否则q会走到NULL/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Li

2020-05-19 21:29:07 143

原创 leetcode 209 长度最小的子数组

https://leetcode-cn.com/problems/minimum-size-subarray-sum给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例: 输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。进阶:如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log

2020-05-18 23:34:57 122

原创 leetcode 42 接雨水

https://leetcode-cn.com/problems/trapping-rain-water给定n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6最开始的想法是一层一层的算,以上例子则..

2020-05-17 22:04:56 89

原创 leetcode 16 最接近的三数之和

https://leetcode-cn.com/problems/3sum-closest又来做水题了给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).沿用上题思路,排序 + 双指针第一遍wa...

2020-05-17 20:54:04 85

原创 leetcode 15 三数之和

https://leetcode-cn.com/problems/3sum给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]//之前在做了two-sum之后再做这个,我的...

2020-05-16 22:46:49 105

原创 nowcoder NC14709

链接:https://ac.nowcoder.com/acm/problem/14709题目描述在遥远的米♂奇♂妙♂妙♂屋里住着一群自然数,他们没事就喜欢拆♂开自己来探♂究。现在他们想知道自己最多能被拆分成多少个不同的自然数,使得这些自然数相乘的值等于被拆分的数。输入描述:第1行输入一个整数T,代表有T组数据。第2-T+1行,每行输入一个整数n,代表需要被拆分的数。数据保证:0<T≤100,0<n≤109。输出描述:输出一共T行,第i行输出一个整数,代表第i行输入的

2020-05-16 00:00:57 252

原创 leetcode 11 盛最多水的容器

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

2020-05-15 22:29:48 80

原创 leetcode 3 无重复字符的最长字串

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

2020-05-14 23:10:25 68

原创 leetcode 2 两数相加

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

2020-05-13 17:33:28 101

原创 c++ 简易可视化推箱子

第一次接触这种,找了个视频看(抄)了看(抄)找不到啥好看的图标#include <graphics.h>#include <iostream>#include <conio.h>using namespace std;IMAGE img[6];//0 空地,1 墙,3 目的地,4 球,5 人,7 完成int imgIndex[6] = ...

2020-05-06 21:18:05 451

原创 python 人民币金额打印(我好five)

md我傻了,真的傻了,py上了这么多周没上过机,试着写一下感觉被我写成了c题不难但是我写的好复杂好丑,天哪,感觉python的各种操作都被我吃了描述银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序。在中文大写方式中,0到10以及100、1000、10000被依次表示为: 零 壹 贰 叁 肆 伍 陆 柒 捌 玖 拾 佰 仟 万以...

2020-05-06 00:50:36 518 2

空空如也

空空如也

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

TA关注的人

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