自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2020-10-14

包子凑数每当有顾客想买X个包子,卖包子的大叔就会选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。当然有时包子大叔无论如何也凑不出顾客想买的数量。比如一共有3种蒸笼,分别能放4、5和6个包子。而顾客想买7个包子时,大叔就凑不出来了。小明想知道一共有多少种数目是包子大叔凑不出来的。第一行包含一个整数N。(1 <= N <= 100)以下N行

2020-10-14 12:53:07 78

原创 2020-10-13

剪邮票题目描述如下图, 有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)比如,下面两张图中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。题解#include <iostream>#include <vector>#include<algorithm>#include<map>using namespace std;int a[12]={0,0,0,0,0

2020-10-13 19:44:01 91

原创 2020-10-12

[蓝桥杯2017初赛]9数算式题目描述观察如下的算式:9213 x 85674 = 789314562左边的乘数和被乘数正好用到了1~9的所有数字,每个1次。而乘积恰好也是用到了1~9的所有数字,并且每个1次。请你借助计算机的强大计算能力,找出满足如上要求的9数算式一共有多少个?注意:总数目包含题目给出的那个示例。乘数和被乘数交换后作为同一方案来看待#include <iostream>#include <vector>#include<algorit

2020-10-12 13:10:50 105

原创 数组中两个数的最大异或值

数组中两个数的最大异或值给定一个非空数组,数组中元素为 a0, a1, a2, … , an-1,其中 0 ≤ ai < 231 。找到 ai 和aj 最大的异或 (XOR) 运算结果,其中0 ≤ i, j < n 。你能在O(n)的时间解决这个问题吗?示例:输入: [3, 10, 5, 25, 2, 8]输出: 28解释: 最大的结果是 5 ^ 25 = 28.题解思路:【Trie树】Trie树建立的思路,整数在存储时需要32bit,因此可以把整数看作为含有32字符的

2020-08-13 19:01:37 1113

原创 存在重复元素 III

存在重复元素 III在整数数组 nums 中,是否存在两个下标 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值小于等于 t ,且满足 i 和 j 的差的绝对值也小于等于 ķ 。如果存在则返回 true,不存在返回 false。示例 1:输入: nums = [1,2,3,1], k = 3, t = 0输出: true示例 2:输入: nums = [1,0,1,1], k = 1, t = 2输出: true示例 3:输入: nums = [1,5,9,1,

2020-08-08 22:14:45 115

原创 二叉树的最近公共祖先

二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释:

2020-08-04 11:48:25 120

原创 二叉树的中序遍历

二叉树的中序遍历给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2]题解思路:中序遍历和前序遍历的不同在于入栈顺序不同,想要结果集按照左子树、根节点、右子树的顺序存储,那么遍历二叉树结点时就需要以又孩子、根节点、左孩子的顺序入栈。最先让根节点入栈(此时是它第一次入栈),在栈非空的情况下,用临时结点对象保存栈顶结点,然后栈顶结点出栈,接下来就可以顺着临时结点对象找到栈顶结点的右孩子(

2020-08-02 17:58:09 224

原创 单词规律

单词规律给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。示例1:输入: pattern = "abba", str = "dog cat cat dog"输出: true示例 2:输入:pattern = "abba", str = "dog cat cat fish"输出: false示例 3:输入: pattern

2020-07-30 18:44:53 141

原创 存在重复元素

存在重复元素给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true题解方法一:用unordered_map来存储不同元素在nums中出现的次数。(unordered_map是基于哈希表实现的,对unord

2020-07-25 11:24:23 142

原创 打家劫舍

打家劫舍LeetCode题目题解这个动态规划太考验思维了 没事的时候再多想想int rob(vector<int>& nums) { if(nums.size()==0) return 0; if(nums.size()==1) return nums[0]; int dp1=nums[0],dp2=max(nums[1],nums[0]),dp=max(dp1,dp2); for(int i=2;i<num

2020-07-22 14:21:25 98

原创 反转字符串中的元音字母

反转字符串中的元音字母编写一个函数,以字符串作为输入,反转该字符串中的元音字母。(理解:将字符串中成对的首尾元音字符进行交换)示例 1:输入: "hello"输出: "holle"示例 2:输入: "leetcode"输出: "leotcede"题解思路:利用双端队列存储字符串中所有元音字符的下标,再利用deque的首尾可操作性通过string的swap()函数交换s中被标记的元音字符,直到deque中只剩下一个单字符或者为空,整个字符串反转结束。 string reverseV

2020-07-22 12:17:04 273

原创 最小栈

最小栈设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null,nul

2020-07-20 12:58:55 86

原创 混合背包

混合背包【题目描述】一个旅行者有一个最多能装V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn。有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。【输入】第一行:二个整数,M(背包容量,M≤200),N(物品数量,N≤30);第2..N+1行:每行三个整数Wi,Ci,Pi,前两个整数分别表示每个物

2020-07-15 13:22:46 476

原创 买卖股票的最佳时机

买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票

2020-07-15 11:13:55 144

原创 删除排序链表中的重复元素

删除排序链表中的重复元素给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3题解ListNode* deleteDuplicates(ListNode* head) { if(head==NULL||head->next==NULL) return head;//若头节点为空没有操作直接返

2020-07-10 10:29:02 101

原创 最后一个单词的长度

最后一个单词的长度给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成示例输入: "Hello World"输出: 5题解//因为是查找最后一个单词的长度 所以用for循环倒着遍历int lengthOfLastWord(string s) { int n=0;//用来记录倒叙搜索时第一个单词的长度 for(int

2020-07-07 12:41:57 113

原创 实现 strStr()

实现 strStr()给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle = "bba"输出: -1题解直接利用C++常用字符串函数 int strStr(string haystack, st

2020-07-05 11:34:03 91

原创 移除元素

移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,2,

2020-07-05 09:44:57 158 2

原创 有效的括号

有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。题解bool isValid(string s) { stack<char> c; if(s=="") return true; for(int i=0;i<s.length();i++){

2020-07-04 11:11:36 96

原创 最长公共前缀

最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。题解string longestCommonPrefix(vector<string>& strs) { string c; int k=0;

2020-07-04 08:32:30 90

原创 数的划分

#数的划分【题目描述】将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。{1,1,5};{1,5,1};{5,1,1};问有多少种不同的分法。 输出一个整数,即不同的分法。【输入】两个整数n,k(6<n≤200,2≤k≤6),中间用单个空格隔开。【输出】一个整数,即不同的分法。【输入样例】7 3【输出样例】4【提示】四种分法为:{1,1,5};{1,2,4};{1,3,3};{2,2,3}。#题解起初想

2020-07-03 19:11:53 137

原创 回文数

#两数之和判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palind

2020-07-02 12:13:55 83

原创 罗马数字转整数

#罗马数字转整数罗马数字包含以下七种字符: 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 +

2020-07-02 11:55:44 296

原创 两数之和

#两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归

2020-07-01 20:58:34 83

空空如也

空空如也

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

TA关注的人

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