自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

思路递归如果p,q分别在该节点的左、右子树,则返回该节点;如果该节点等于p,q中的一个,且另一个在该节点的子树中,则返回该节点;代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {}

2020-05-24 17:14:14 55

原创 104.二叉树的最大深度

思路递归,当前节点的深度等于他左右子树的较大深度加1。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:

2020-05-24 16:43:02 64

原创 101.对称二叉树

思路采用递归的思想,逐层判断是否对称。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool is

2020-05-18 23:52:22 58

原创 100.相同的树

思路使用递归的方式进行同步遍历两棵树,首先先判断p和q是不是NULL的情况,然后判断他们的值是否相等,最后进行遍历。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * };

2020-05-18 23:34:33 63

原创 210.课程表2

思路拓扑排序:每次从入度为 0 的结点开始,加入队列。入度为 0 ,表示没有前置结点。处理入度为 0 的结点,把这个结点指向的结点的入度 -1 。再把新的入度为 0 的结点加入队列。如果队列都处理完毕,但是和总结点数不符,说明有些结点形成环。代码class Solution {public: vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) {

2020-05-18 17:44:49 51

原创 207.课程表

思路采用拓扑排序解法。本题需要判断:有向无权图中是否存在环。因此,可以用拓扑排序判断有无环。代码class Solution {public: bool canFinish(int numCourses, vector<vector<int>>& prerequisites) { vector<int> indegree(numCourses); vector<vector<int>> vec(numCourses);/

2020-05-18 17:34:55 51

原创 尝试找闭回路

思路递归回溯链表头插#include<iostream>#include<cmath>using namespace std;#define m 3#define n 4 struct Cnode//闭回上的路节点结构{int Ox;int Oy;Cnode * pPre;//指向前一个节点};struct Circle//闭回路链表结构...

2020-04-25 19:51:15 650 1

原创 137.只出现一次的数字II

题目来自力扣思路用位运算(程序中的所有数在计算机内存中都是以二进制的形式储存的,位运算直接对整数在内存中的二进制位进行操作)。1.这时传入的数组相当于一个二维数组,采用双重循环从低位开始计算每一列的和,该和对3取余就是单独数字二进制在该位的数字。2.计算完每列之和后,要更新结果k。代码class Solution {public: int singleNumber(vec...

2020-04-19 09:45:29 56

原创 78.子集

题目来自力扣思路递归回溯法,每个元素都有选和不选两种结果,那么n个元素就有n^2种结果。代码class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<int>item;//子集 vector<v...

2020-04-18 15:50:04 97

原创 136.只出现一次的数字

题目来自力扣思路先用快速排序法给数组排序,用变量i去遍历这个数组,若i位置的元素与他后一个不相同,则i位置的元素为单个元素,若相同,i移动两个元素位置,继续进行比较。当i遍历到最后一个元素,最后这个元素即为单个元素。返回单个元素。代码class Solution {public: int singleNumber(vector<int>& nums) {...

2020-04-10 12:47:25 69

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

题目来自力扣思路暴力法:1.用三个变量:cf记录本次重复元素的位置并初始化为-1,h记录当前已遍历元素个数并初始化为1,l记录当前无重复字符最长子串的字符个数并初始化为1;2.用当前正在遍历的元素与cf之后的所有元素依次比较,当遇到相等的情况立即停止(如s[i]==s[h]),并更新cf为重复元素位置i,否则继续比较下一个;然后更新l,h++;重复这个过程直到重复元素到最后一个元素的位...

2020-04-10 02:30:28 49

原创 344.反转字符串

题目来自力扣反转字符串思路双指针代码class Solution {public: void reverseString(vector<char>& s) { int n=s.size(); for(int i=0;i<n/2;i++) { if(s[i]==s[n-1-i]) cont...

2020-04-02 13:56:56 45

原创 14.最长公共前缀

题目来自力扣思路判断传入数组长度,为0返空串,为1返第一个字符串,大于1:用两个变量i和j,i用来固定列,j用来跑行,当(i,j)位置的元素与(0,j)位置的元素不匹配时,取第一行的前i个元素返回。代码class Solution {public: string longestCommonPrefix(vector<string>& strs) { ...

2020-03-31 16:12:25 46

原创 239.滑动窗口最大值

题目https://leetcode-cn.com/problems/sliding-window-maximum/思路暴力法,没啥思路可言。代码class Solution {public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { int m; ...

2020-03-29 15:44:44 35

原创 641.设计循环双端队列

题目来自力扣思路用两个标志变量_pFront,_pRear记录首位元素位置。头插时,在_pFront的位置先插入元素,再让它倒着跑一格,尾插时_pRear先正着跑一格,然后在新的位置插入元素。代码class MyCircularDeque {private: int _length; int _pFront; int _pRear; int _maxSize; vect...

2020-03-29 12:19:32 66

原创 7.整数反转

题目思路主要是处理整数反转后溢出的问题,用long long类型的变量m存储反转的整数,若溢出m=0,返回m。代码class Solution {public: int reverse(int x) { const int int_max=pow(2,31)-1; const int int_min=-pow(2,31); long long...

2020-03-26 16:19:29 44

原创 150.逆波兰表达式求值

思路遍历数组,遇到数字进栈,遇到运算符,弹出刚入栈的两个元素进行运算,运算结果入栈。返回栈顶元素。代码class Solution {public: int evalRPN(vector<string>& tokens) { int l=tokens.size(); int m=0,n=0; stack<int...

2020-03-22 12:00:41 52

原创 155.最小栈

思路用两个栈s,min,s进行正常的操作,min用来记录当前s的最小元素。代码class MinStack {public: stack<int>s; stack<int>min; MinStack() { } void push(int x) { s.push(x); if(min....

2020-03-22 09:24:31 60

原创 20.有效的括号

思路用一个变量遍历数组,如果:1.遇到非括号元素返回false;2.遇到左半边括号,入栈;3.遇到右半边括号,判断它是否与栈首匹配,是则弹出栈首元素,否则返回false。最后判断栈内是否有括号,是则返回false,否则返回true。代码class Solution {public: bool isValid(string s) { int i;//遍历字符串...

2020-03-17 22:50:01 36

原创 141.环形链表

思路定义两个指针(快指针 f 和慢指针 s )同时指向链表头结点,循环地让块指针走两步(f=f->next->next)慢指针走一步(s=s->next),当快指针指向节点和该节点的next不为空时,判断两个指针是否相遇(f=s),相遇则返回真。代码/** * Definition for singly-linked list. * struct ListNode {...

2020-03-15 10:18:01 49

原创 83.删除顺序列表中的重复元素

思路定义一个代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: L...

2020-03-15 08:30:12 115

原创 21.合并两个有序链表

思路1.new一个新的链表l3,它的头结点的数据初始化为0;2.创建一个节点p并初始化为l3的头结点,让它去记录l1和l2中节点数据小的节点并后移,节点数据小的链表头指针后移;3.知道其中一个链表为空,p的指针指向另一个链表的头节点;4.返回l3的头节点的指针。代码/** * Definition for singly-linked list. * struct ListNode...

2020-03-14 15:33:59 47

原创 122.买卖股票的最佳时期

思路后一天比这一天高,则这一天买入后一天卖出,以此类推代码class Solution {public: int maxProfit(vector<int>& prices) {int i,w=0;if(prices.size()==0)return 0; for(i=0;i<prices.size()-1;i++) {if(price...

2020-03-05 11:13:17 82

原创 猜数字游戏

思路1.c++用rand函数根据当前时间生成随机数字(注意添加头文件<time.h>);2.用for循环进行输入,当输入正确结束循环,当输入错误,跳出这次循环继续输入直到正确。代码#include<iostream>#include<time.h>using namespace std;void main(){int m;//int m=75;...

2020-03-03 10:58:05 214

原创 88.合并两个数组

题目1.给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。(1)初始化 nums1 和 nums2 的元素数量分别为 m 和 n。(2)你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。来源:力扣(LeetCode)思路1.从后往前遍历数组2,数组1,把大的元素挪...

2020-03-01 20:49:09 66

原创 121.买股票的最佳时期

思路1.暴力法代码class Solution {public: int maxProfit(vector<int>& prices) { int i,j,w=0; for(i=0;i<prices.size()-1;i++) for(j=i+1;j<prices.size();j++) w=(p...

2020-03-01 20:34:28 58

原创 53.最大子序和

思路1.计算数组中到当前元素的最大和,并存在该数组;2.遍历数组找出最大元素所在位置。代码class Solution {public: int maxSubArray(vector<int>& nums) { int n=nums.size(); int max=nums[0]; for(int i=1;i&...

2020-03-01 20:14:34 55

空空如也

空空如也

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

TA关注的人

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