
leetcode
文章平均质量分 58
清风予你
实践与理论结合,每天进步一点!!!个人遇到问题记录!
展开
-
322. 零钱兑换
https://leetcode-cn.com/problems/coin-change/给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。示例 1:输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1示例 2:输入:coins = [2], .原创 2022-01-23 21:52:14 · 523 阅读 · 1 评论 -
509. 斐波那契数
通过这个简单的题目来入门动态规划和递归。不是所有的递归都需要动态规划,只有大问题分叉为子问题,并且子问题需要重复计算,重叠计算才需要动态规划。509. 斐波那契数https://leetcode-cn.com/problems/fibonacci-number/斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1)= 1F(n) = F(n - 1) + F(n - 2).原创 2022-01-22 17:27:21 · 417 阅读 · 0 评论 -
leetcode32. 最长有效括号
https://leetcode-cn.com/problems/longest-valid-parentheses/给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = "(()"输出:2解释:最长有效括号子串是 "()"示例 2:输入:s = ")()())"输出:4解释:最长有效括号子串是 "()()"示例 3:输入:s = ""输出:0提示:0 <= s.length <= 3 *.原创 2022-01-12 15:31:45 · 216 阅读 · 0 评论 -
add_compile_tool
#!/usr/bin/python# -*- coding: UTF-8 -*-def addcompile(nums, tokens): # 对于异常的保护 add_stack = [] if nums == 0: return if tokens[0] == 'add': add_stack.append(1) if nums == 1 and tokens[0] != 'add': return 'inv.原创 2021-07-25 17:48:20 · 137 阅读 · 0 评论 -
强密码
# coding=utf-8from strongpasswordcheck import StrongPasswordCheckimport unittestclass PasswordCheckTest(unittest.TestCase): def test_null(self): checkstring = StrongPasswordCheck('') self.assertEqual(6, checkstring.minchangetimes(.原创 2020-05-13 00:45:14 · 756 阅读 · 0 评论 -
字符串最后一个单词的长度
int main() { vector str; string tmp; while(cin>>tmp) { str.push_back(tmp); } tmp=str.back(); cout}注意:从键盘输入的函数1 cin>>,遇到空格,Tab和enter键会停止读。>> 会过滤掉不原创 2017-07-06 16:57:49 · 258 阅读 · 0 评论 -
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。class Solution {public: int Add(int num1, int num2) { //不知道怎么算 //四则运算和位运算 //加法不带进位 //异火 //算进位原创 2017-07-21 15:48:21 · 564 阅读 · 0 评论 -
求1+2+3+...+n
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)class Solution {public: //思想精妙 //真想不出来 int Sum_Solution(int n) { int res=0; n原创 2017-07-21 16:00:59 · 272 阅读 · 0 评论 -
字符串排列
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。class Solution {public: //res表示传回结果。 void permute(string s,int k,vector &res) {原创 2017-07-09 17:08:50 · 201 阅读 · 0 评论 -
组合
#include#include #includeusing namespace std;#include//用vector来存放保存的字符串。void combination(char *string, int number, vector &result);void combination(char *string){assert(string !=原创 2017-07-09 17:09:32 · 241 阅读 · 1 评论 -
两个只出现一次的数字。
思路:http://blog.youkuaiyun.com/morewindows/article/details/8214003class Solution {public: void FindNumsAppearOnce(vector data,int* num1,int *num2) { if(data.size() int te原创 2017-07-18 10:40:44 · 228 阅读 · 0 评论 -
丑数
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数class Solution {public: int GetUglyNumber_Solution(int index) { if (index //原创 2017-07-14 22:15:50 · 212 阅读 · 0 评论 -
重建二叉树
题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:递归1 找到根节点2 创建节点3 注意左右节点位置的区别class Solution {public:原创 2017-06-14 10:31:26 · 232 阅读 · 0 评论 -
把数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。class Solution {public: //day2017-7-13 //周四 static bool compare(const string &a,const stri原创 2017-07-13 22:58:28 · 263 阅读 · 0 评论 -
整数中1出现的次数
一个更好的办法是利用数学公式直接计算出最终的结果,该方法是依次求出数字 X 在个位、十位、百位等等出现的次数,再相加得到最终结果。这里的 X∈[1,9]X∈[1,9],因为 X=0X=0 不符合下列规律,需要单独计算。首先要知道以下的规律:从 1 至 10,在它们的个位数中,任意的 X 都出现了 1 次。从 1 至 100,在它们的十位数中,任意的 X 都出现了 10 次。从 1原创 2017-07-13 22:06:23 · 317 阅读 · 0 评论 -
复杂链表的复制
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)class Solution {public: RandomListNode* Clone(RandomListNode* pHead)原创 2017-06-25 17:28:20 · 196 阅读 · 0 评论 -
day 3 从尾到头打印
题目: 输入一个链表,从尾到头打印链表每个节点的值。思路:递归(栈)代码:class Solution {public: vector res; vector& printListFromTailToHead(ListNode* head) { //day 3 周一 2017-6-12日 // 递归解决(栈)原创 2017-06-13 10:42:43 · 212 阅读 · 0 评论 -
二叉树和为某指定数
题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。原创 2017-06-25 10:48:14 · 293 阅读 · 0 评论 -
day 2 替换空格
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。day 2 由于论文修改,耽搁了几天。题目:替换空格,1 计算空格数,这里length是系统给的长度。2 注意边界条件,两个指针,一个指向原始字符串的结尾,一个指向扩充数组的末尾3 循环直到数组开头,若遇到空格,添加元素%20,否原创 2017-06-12 22:53:41 · 250 阅读 · 0 评论 -
孩子们的游戏(圆圈中最后剩下的数)
每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下原创 2017-07-21 17:04:16 · 206 阅读 · 0 评论 -
质数因子
:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。#include #include #include using namespace std;//麻蛋什么是质数//除了1和其本身int main (){ long n; while(cin>>n) {原创 2017-07-09 23:00:06 · 257 阅读 · 0 评论 -
二叉树打成多行
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。//没什么可说的/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(N原创 2017-08-15 23:16:37 · 271 阅读 · 0 评论 -
之字形二叉树
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) :原创 2017-08-15 17:19:23 · 456 阅读 · 0 评论 -
对称二叉树
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val原创 2017-08-15 16:27:17 · 280 阅读 · 0 评论 -
二叉树的下一个节点
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路分析二叉树的下一个节点,一共有以下情况: 1.二叉树为空,则返回空; 2.节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的指针找到的叶子节点即为下一个节点; 3.节点不是根节点。如果该节点是其父节点的左孩原创 2017-08-15 15:41:14 · 351 阅读 · 0 评论 -
删除链表中重复的节点
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : va原创 2017-08-14 20:25:33 · 290 阅读 · 0 评论 -
链表的环的入口结点
一个链表中包含环,请找出该链表的环的入口结点。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*//** 资料快慢指针:http://www.cnblogs.com/原创 2017-08-14 15:25:47 · 369 阅读 · 0 评论 -
字符串是否表示数值
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。class Solution {public: bool isNumeric(char* string) {原创 2017-08-12 23:06:14 · 303 阅读 · 0 评论 -
正则表达式匹配
题目:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。思路:当模式中的第二个字符不是“*”时:1、如果字符串第一个字符和模原创 2017-08-12 21:44:32 · 234 阅读 · 0 评论 -
构建一个数组
给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。class Solution {public: vector multiply(const vector& A) { // 思路,有点像动原创 2017-08-11 22:36:39 · 413 阅读 · 0 评论 -
序列化二叉树
题目描述请实现两个函数,分别用来序列化和反序列化二叉树/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {原创 2017-08-18 19:23:56 · 344 阅读 · 0 评论 -
滑动窗口的大小
题目描述:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2原创 2017-08-18 16:14:05 · 2137 阅读 · 0 评论 -
矩阵的路径
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的原创 2017-08-17 09:14:21 · 332 阅读 · 0 评论 -
最小公约数和最小公倍数
#includeusing namespace std;//最大公约数//辗转相除法int gcd(int a,int b){ while(a%b) { int tmp=a; a=b; b=tmp%b; } return b;}int main()原创 2017-07-24 20:12:40 · 582 阅读 · 0 评论 -
扑克牌
LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。原创 2017-07-23 21:28:17 · 244 阅读 · 0 评论 -
二叉搜索树的后序遍历
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。class Solution {public: bool VerifySquenceOfBST(vector sequence) { // 首先你得知道什么是二叉搜索树 //20原创 2017-06-24 12:15:41 · 218 阅读 · 0 评论 -
从上向下打印二叉树
思路:bfsclass Solution {public: vector PrintFromTopToBottom(TreeNode* root) { //2017-6-24 //思路,设置队列 //if (root==NULL)\ //哪里错了??????????????????原创 2017-06-24 10:48:51 · 233 阅读 · 0 评论 -
斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。nclass Solution {public: int Fibonacci(int n) { //F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2) //递归法 // if(n==0) return 0; // if原创 2017-06-17 23:26:01 · 205 阅读 · 0 评论 -
数组的旋转
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解:class Solution {public: int minNumberI原创 2017-06-17 22:04:42 · 216 阅读 · 0 评论 -
day 4 两栈实现队列
题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。/*@param day 4 6-16 周五。思路:将s1,s2 作为维护的数组,s1作为存储组,s2做缓冲组。*/class Solution{public: void push(int node) { //进栈,判断是否为空原创 2017-06-17 20:27:07 · 245 阅读 · 0 评论