![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
牛客网&&LeetCode中好的题
文章平均质量分 55
好的题目
没什么..
一个可爱的人
展开
-
二叉树OJ训练
二叉树OJ训练一级目录二级目录一级目录二级目录原创 2022-04-04 16:03:34 · 1773 阅读 · 0 评论 -
字符串OJ
字符串OJ1. LeetCode第415题---字符串相加2. LeetCode第43题---字符串相乘3. LeetCode第6题---Z字形变换4. LeetCode第4题---寻找两个正序数组的中位数5. LeetCode第3题---整数反转1. LeetCode第415题—字符串相加class Solution {public: string addStrings(string num1, string num2) { string ret; int原创 2022-01-14 20:47:24 · 482 阅读 · 2 评论 -
动态规划(股票问题及打家劫舍系列)
股票问题及打家劫舍1. 股票问题系列1.1 LeetCode第121题---买卖股票的最佳时机1.2 LeetCode第122题---买卖股票的最佳时机II1.3 LeetCode第122题---买卖股票的最佳时机III1.4 LeetCode第188题---买卖股票的最佳时机IV1.5 LeetCode第714题---买卖股票的最佳时机含手续费1.6 LeetCode第309题---最佳买卖股票时机含冷冻期2. 打家劫舍系列2.1 LeetCode第198题---打家劫舍2.2 LeetCode第213题原创 2022-03-01 16:07:38 · 423 阅读 · 0 评论 -
动态规划(01背包和完全背包系列)
动态规划(01背包和完全背包系列)1. 背包问题总结模板2. 01背包系列题目2.1 LintCode---01背包问题2.2 LeetCode第416题---分割等和子集2.3 LeetCode第474题---一和零2.4 LeetCode第494题---目标和2.5 LeetCode第1049题---最后一块石头的重量3. 完全背包系列题目3.1 LeetCode第322题---零钱兑换I(最大最小值问题)3.2 LeetCode第518题---零钱兑换II(组合问题)3.3 LeetCode第377题原创 2022-02-23 19:18:27 · 559 阅读 · 0 评论 -
三数之和系列题
数组---三数之和系列1. LeetCode第18题---二数之和2. LeetCode第15题---三数之和3. LeetCode第18题---四数之和4. LeetCode第16题---最接近的三数之和1. LeetCode第18题—二数之和class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { for(int i = 0;i<nums.siz原创 2022-01-11 16:51:53 · 534 阅读 · 0 评论 -
Hash专场
Hash专场1. LeetCode第705题---设计哈希集合2. LeetCode第706题---设计哈希映射1. LeetCode第705题—设计哈希集合链接: https://leetcode-cn.com/problems/design-hashset/解题思路:使用数组 + 单链表的形式class MyHashSet { struct Node{ int val; Node* next; Node(int key):val(key)原创 2021-12-26 19:27:34 · 289 阅读 · 0 评论 -
剑指offer---思维开放题
思维开放题1. 剑指offer61题---扑克牌中的顺子2. 剑指offer62题---圆圈中最后剩下的数字3. 剑指offer63题---股票的最大利润4. 剑指offer64题---求1+2+....+n5. 剑指offer65题---不用加减乘除做加法1. 剑指offer61题—扑克牌中的顺子链接:https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof/先对数组执行排序。判别重复: 排序数组中的相同元素位置相邻,因此原创 2021-11-04 21:36:15 · 214 阅读 · 2 评论 -
深度优先搜索(Depth First Search)
深度优先搜索1. LeetCode690题---员工的重要性2. LeetCode733题---图像渲染3. LeetCode463题---岛屿的周长3.1 LeetCode130题---被围绕的区域4. LeetCode200题---岛屿数量4.1 LeetCode695题---岛屿的最大面积应为遍历一个点都是一条道走到黑才停止下来,所以也被称为深度优先搜索1. LeetCode690题—员工的重要性链接: https://leetcode-cn.com/problems/employee-impo原创 2021-10-17 18:08:03 · 485 阅读 · 0 评论 -
广度优先搜索
广度优先搜索1. LeetCode690题---员工的重要性2. LeetCode429题---N叉树的层序遍历3. LeetCode994题---腐烂的橘子4. LeetCode题---5. LeetCode题---1. LeetCode690题—员工的重要性链接: https://leetcode-cn.com/problems/employee-importance/这里使用的广度优先搜索的方法来解题。2. LeetCode429题—N叉树的层序遍历链接: https://leetcode-原创 2021-10-24 14:02:25 · 173 阅读 · 1 评论 -
动态规划(一般题型)
动态规划1. Fibonacci数列2. 变态青蛙跳台阶3. 最大连续子数组合4. 三角矩阵5. 路径总数I5.1 路径总数II6. 最小路径和7. 背包问题8. 不同子序列1. Fibonacci数列2. 变态青蛙跳台阶3. 最大连续子数组合4. 三角矩阵5. 路径总数Iclass Solution {public: int uniquePaths(int m, int n) { //但是也不能无休止的进行下去呀,所以要有一个停止的条件 //你会发现第原创 2021-10-22 15:11:51 · 414 阅读 · 0 评论 -
回溯算法OJ
这里写目录标题一级目录二级目录一级目录二级目录原创 2021-10-23 15:41:26 · 430 阅读 · 0 评论 -
栈和队列经典OJ题
栈和队列经典OJ题1. LeetCode第225题---用队列实现栈2. LeetCode第232题---用栈实现队列3. LeetCode第20题---有效的括号4. LeetCode第150题---逆波兰表达式5. LeetCode第155题---最小栈6. 牛客网剑指offer21题---栈的压入、弹出序列1. LeetCode第225题—用队列实现栈链接: https://leetcode-cn.com/problems/implement-stack-using-queues/题解:用队列原创 2021-10-05 19:50:02 · 471 阅读 · 0 评论 -
数组面试题OJ
关于复习时自己所做的题,并写下思路剑指offer面试题3—数组中重复的数字一级目录一级目录一级目录一级目录一级目录原创 2021-09-30 18:25:37 · 328 阅读 · 0 评论 -
链表面试题OJ
链表OJ1. 头插或三指针翻转法1. LeetCode206题---反转链表2. LeetCode203题---移除链表元素3. 快慢指针法及其变形3.1 LeetCode876题---链表的中间结点3.2 LeetCode题---链表中倒数第k个结点3.3 剑指offer27题---链表的回文结构3.4 LeetCode141题---环形链表I3.5 LeetCode142题---环形链表II4. 找到长链表然后走差值步,然同时走4.1 LeetCode160题---相交链表5. 创造带哨兵位的头结点和原创 2021-09-30 15:53:34 · 354 阅读 · 0 评论 -
LeetCode第350题---两个数组的交集 II
LeetCode链接: link.解题思路:先用unordered_map统计nums1中每个元素出现的次数遍历nums2,如果发现nums2中的e出现于unordered_map中,就将其存入v中,然后让m[e]自减,当记录e在字典中的值为0时,就将这条记录删除。class Solution {public: vector<int> intersect(vector<int>& nums1, vector<int>& nums2)原创 2021-06-16 17:57:05 · 112 阅读 · 0 评论 -
LeetCode第884题---两句话中的不常见单词
LeetCode链接: link.解题思路:将nums中的元素放到unordered_set中去重检测nums中元素个数和unordered_set中元素个数是否相等,如果相等则没有重复,如果不相等则有重复class Solution {public: vector<string> uncommonFromSentences(string s1, string s2) { string s = s1 + " " + s2; vector&l原创 2021-06-16 17:15:03 · 81 阅读 · 0 评论 -
牛客网---单词识别(map相关题目)
牛客网链接: link.解题思路:遍历语句字符串,从语句字符串中分离出单词(“ ”、“.”、","这三个来区分)每分离出一个单词,就将该单词插入到map中,map会自动统计该单词出现的次数将统计到的结果按照要求输出注意:统计单词时,要将单词的大小写统一注意循环输入#include <iostream>#include <string>#include <map>using namespace std; int main(){原创 2021-05-28 10:27:26 · 133 阅读 · 0 评论 -
LeetCode第236题---二叉树的最近公共祖先
LeetCode链接: link.解题思路:①②原创 2021-05-27 16:24:22 · 208 阅读 · 0 评论 -
LeetCode第606题---根据二叉树创建字符串
LeetCode链接: link.解题思路:在这里插入代码片原创 2021-05-27 13:58:41 · 76 阅读 · 0 评论 -
LeetCode第102题---二叉树的层序遍历
LeetCode链接: link.解题思路:①在这里插入代码片LeetCode第107题—二叉树的层序遍历II链接: link.这道题和上面的题思想一致,就是需要在把vector<vector< int>> 里面的vector< int>进行reverse逆置就可以了。...原创 2021-05-27 13:43:27 · 137 阅读 · 1 评论 -
二叉树非递归的前中后序遍历
二叉树的前序遍历LeetCode链接: link.原创 2021-05-27 11:30:23 · 206 阅读 · 0 评论 -
LeetCode第692题---前K个高频单词
LeetCode链接: link.解题思路:原创 2021-05-25 15:20:09 · 300 阅读 · 0 评论 -
牛客网---两种排序方法
牛客网链接: link.解题思路:在这里插入代码片原创 2021-05-07 15:47:57 · 199 阅读 · 0 评论 -
程序员面试宝典---求最小公倍数
牛客网链接: link.解题思路:在这里插入代码片原创 2021-05-07 11:27:22 · 167 阅读 · 1 评论 -
牛客网---Fibonacci数列
牛客网链接: link.解题思路:在一个Fibonacci数列中找到N这个数的相邻的左右数,然后在进行判断,就可以得到变为Fibonacci数最少需要几步。#include<iostream>using namespace std;int main(){ int f , f1 = 0,f2 = 1; int N; cin >> N; int left = 0,right = 0; while(1) { /原创 2021-05-07 10:45:07 · 155 阅读 · 1 评论 -
牛客网---合法括号序列判断
链接: link.解题思路:采用栈来解决这道题目。返回false的情况一共有三种①左半边括号多了②右半边括号多了③出现了非括号字符当遇见’(’,就进行一个相应的压栈,当遇见’)'就把栈顶的括号拿过来进行配对(这也是用到了栈的后进先出的特性)class Parenthesis {public: bool chkParenthesis(string A, int n) { // write code here stack<char> st;原创 2021-05-07 09:53:07 · 142 阅读 · 0 评论 -
华为机试---走方格的方案数
牛客网链接: link.解题思路:如下图这道题可以用递归的思想来解题,会简单许多。#include<iostream>using namespace std;int pathnum(int m,int n){ if(m == 0 || n == 0) //此时已经走到了最右边或者最下边 return 1; return pathnum(m-1,n)+pathnum(m,n-1);}int main(){ int m,n; w原创 2021-05-06 21:22:06 · 176 阅读 · 0 评论 -
牛客网---另类加法
牛客网链接: link.解题思路如下图:采用递归的思想总是要停下来的,条件就是其中一个为0,那么就返回另一个。求取数字相加后当前二进制的取值(不考虑进位)求取数字相加后进位的取值class UnusualAdd {public: int addAB(int A, int B) { // write code here if(A == 0) return B; if(B == 0)原创 2021-05-06 17:41:18 · 144 阅读 · 0 评论 -
牛客网---密码强度
牛客网链接: link.思路不难,就是一个C语言的逻辑语句#include<iostream>#include<string>using namespace std;int score_count(const string& s){ int digit = 0,symbol = 0;//数字和特殊符号 int lower = 0,upper = 0,charactor = 0; int size = 0,sum = 0; fo原创 2021-05-06 16:47:31 · 135 阅读 · 0 评论 -
程序员面试宝典---井字棋
牛客网链接: link.这是一道考察二维数组的题目。解题思路:在这里不要局限的固定思维,这个棋盘是3*3的,一开始可能认为要判断横竖或者斜位置上是否三个值相同,这种思维是不可取的。首先题目要求只要是当前玩家赢就返回true,所以不要考虑对方玩家。class Board {public: bool checkWon(vector<vector<int> > board) { // write code here //不要想着去判原创 2021-05-06 15:01:31 · 162 阅读 · 1 评论 -
剑指offer---连续最大和
牛客网链接: link.这是一道动态规划的题目解题思路:dp[i]就是以数组下标为i的数做为结尾的最大子序列和,注意是以i为结尾,比如说现在一个数组{6,-3,-2,7,-15,1,2,2},dp[2]就是以-2为结尾的,那么显然dp[2]的最大值就是1(6,-3,-2),dp[3]要以7结尾那么以7结尾的子序列最大和就是8(6,-3,-2,7)。现在我们开始细细品一下上面这个递推式,求dp[i]的时候是不是有两种可能,要么就是像上面的dp[3]一样,dp[2]求出来是1了,再加上自己array[3]原创 2021-05-05 18:02:40 · 91 阅读 · 0 评论 -
牛客网---统计回文
牛客网链接: link.解题思路:找到位置进行插入 (这里需要注意的就是在写循环的时候,如果只是小于str1.size(),那么就在尾部的位置进行不了插入,就少了一种可能)判断是否回文(这个可以单独的写一个接口来进行判断①前后指针法②把插入完的字符串直接进行逆置,然后判断是否和原字符串相同)还有一点需要注意的是不要再str1的本身上面进行修改,需要重新的拷贝一份。using namespace std;bool isCircle(string& s){ size_t s原创 2021-05-05 16:00:50 · 140 阅读 · 0 评论 -
牛客网---组队竞赛
牛客网链接: link.解题思路:首先进行一个排序,那么就可以得到一个有序的数组。我把前n个数就可以分别作为每一个队伍的最小值,那么剩下的就是如何来找每组中的中间值。需要使用long long类型,对于n来说最大可能是10^5 , 但是每一个数据又最大是10^9, 所以每一个中间值的大小可能是10^14,但是是求和算sum,可能有很多个这么大小的值,所以相加已经超过了int的范围,所以需要改为更大的long long类型来适配。#include<iostream>原创 2021-05-04 17:26:36 · 284 阅读 · 0 评论 -
LeetCode第232题---用栈实现队列
LeetCode链接: link.解题思路:不管底层用什么结构实现,永远保证数据先进先出的一个逻辑数据结构,即队列创建栈st1和st2,入队直接在栈st1进行入队操作出队时,若st2不空,直接出栈即是出队,若st2已为空,则把栈st1里面的所有数据导入st2获取队头元素时,若st2不空,就去栈顶元素即为队头,若为空,则需要把栈st1里面的所有数据导入st2判断队列是否为空,需要满足两个栈都为空时整个队列才为空class MyQueue {public:原创 2021-05-04 14:21:53 · 139 阅读 · 0 评论 -
LeetCode第225题---用队列实现栈
LeetCode链接: link.解题思路:不管底层用什么结构实现,永远保证数据先进后出的一个逻辑数据结构,即栈借助队列实现栈,可以使用两个队列,也可以只是用一个队列,本解只借助一个队列即可入栈,即把数据进行入队,为了保证栈的特性先进后出,因此需要在push方法中对入队之前的所有元素进行一次出 队入队操作,以保证所有数据达到先进后出的顺序出栈,由于队列数据顺序已经调整,所以只需取队头元素即可class MyStack {public: /** Initiali原创 2021-05-04 13:24:11 · 98 阅读 · 0 评论 -
牛客网---数组中出现次数超过一半的数字
牛客网链接: link.解题思路:数组排序后,如果符合条件的数存在,则一定是数组中间那个数(比如:1,2,2,2,3;或2,2,2,3,4;或2,3,4,4,4等等)查找满足条件的数 count > len/2,则出现次数大于一半class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { if(numbers.empty())原创 2021-05-04 11:49:56 · 98 阅读 · 0 评论 -
LeetCode第26题---删除有序数组中的重复项
LeetCode链接: link.解题思路:在这里插入代码片原创 2021-05-04 11:16:18 · 100 阅读 · 0 评论 -
LeetCode第260题---只出现一次的数iii
LeetCode链接: link.解题思路:在这里插入代码片原创 2021-05-03 19:12:00 · 146 阅读 · 0 评论 -
LeetCode第137题---只出现一次的数字 II
LeetCode链接: link.解题思路:在这里插入代码片原创 2021-05-03 18:32:44 · 145 阅读 · 0 评论 -
牛客网---删除公共字符串
牛客网链接: link.解题思路:①size_t find (char c, size_t pos = 0) const;知道find接口的使用方式,即使不给值也是有缺省值的,可以从头开始找。②str2中一个有多少个字符,这个条件将作为第一个循环的条件(因为我要将str1中的str2中出现的字符都删除掉)#include<iostream>#include<string>using namespace std;int main(){ string str1原创 2021-05-03 16:49:29 · 172 阅读 · 0 评论