自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode-44. 通配符匹配-支持 ‘?‘ 和 ‘*‘ 的通配符匹配

一、题目二、思路三、代码class Solution {public: bool isMatch(string s, string p) { int m = s.size(); int n = p.size(); vector<vector<int>> dp(m + 1, vector<int>(n + 1)); dp[0][0] = true; for (int i

2022-04-24 10:14:17 1694

原创 leetcode-1721. 交换链表中的节点-双指针方式找到两个节点

一、题目二、思路1、采用双指针方式找到两个节点2、交换两个节点的值三、代码class Solution {public: ListNode* swapNodes(ListNode* head, int k) { ListNode *fast=head; ListNode *cur=head; for(int i=0;i<k-1;++i){ cur=cur->next; }

2022-04-23 23:07:41 1421

原创 leetcode-2095. 删除链表的中间节点-双指针-慢指针新建一个头指针(要删除下一个)

一、题目二、思路1、双指针,快指针指向空时,慢指针指向中间节点2、慢指针新建一个头指针,方便删除下一个三、代码class Solution {public: ListNode* deleteMiddle(ListNode* head) { ListNode *fast=head; ListNode *slow=new ListNode(0); ListNode *node=slow; slow->next=head;

2022-04-23 16:01:55 667

原创 leetcode-剑指 Offer 46. 把数字翻译成字符串-0到25翻译成子母,有几种不同的法翻译

一、题目二、思路1、采用dfs2、传入加判断条件,比如不能超过25,传两个数时第一个数不能为0三、代码class Solution {public: int Count; int translateNum(int num) { Count=0; string str=to_string(num); int len=str.length(); dfs(str,len,0); return Count;

2022-04-23 14:37:46 160

原创 leetcode-剑指 Offer II 119. 最长连续序列的长度(连续序列是指0123456一直连续,数组顺序可以是乱的)

一、题目二、思路1、添加到哈希容器中2、遍历,找到当前数的前一个,如果不在哈希容器中,就从当前数while遍历到后面,找到长度三、代码class Solution {public: int longestConsecutive(vector<int>& nums) { unordered_set<int> dic; int size=nums.size(); for(int i=0;i<size;++

2022-04-21 23:03:21 323 1

原创 leetcode-牛客-最长上升子序列(三)-最长递增子序列(求出具体的递增子序列,不是个数)-动态规划

一、题目二、思路1、动态规划,在求出最长递增子序列个数的基础上,找到具体的值2、先求出长度3、找到dp[i]等于当前长度的值,添加到输出容器三、代码class Solution {public: /** * retrun the longest increasing subsequence * @param arr int整型vector the array * @return int整型vector */ vector<int&

2022-04-21 22:32:08 236

原创 leetcode-剑指 Offer II 095. 最长公共子序列--求长度

一、题目二、思路二维动态规划dp[i][j]表示的text1的i-1和text2的j-1之间的公共子序列的长度三、代码class Solution {public: int longestCommonSubsequence(string text1, string text2) { int len1=text1.length(); int len2=text2.length(); vector<vector<int>&

2022-04-21 20:32:30 171

原创 leetcode-判断是否是平衡二叉树

一、题目二、思路递归退出条件:当root==nullptr时,返回0;当左子树-右子树绝对值大于1,返回-1;当左子树==-1,右子树==-1,返回-1;其余情况,返回当前左右子树中最大高度最后返回情况,当为-1时,返回false,其余情况返回true三、代码class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { if(pRoot==nullptr) {

2022-04-20 19:42:35 1020

原创 leetcode-543. 二叉树的直径-最长路径的长度减一

一、题目二、思路1、和最长路径相似,不一定从根节点开始2、指的是这条路径上有多少个节点,再减去1三、代码class Solution {public: int ans; int diameterOfBinaryTree(TreeNode* root) { ans=1; depth(root); return ans-1; } int depth(TreeNode* root){ if(root==n

2022-04-20 15:57:53 361

原创 leetcode-119. 杨辉三角 II-返回「杨辉三角」的第 rowIndex 行。

一、题目二、思路三、代码class Solution {public: vector<int> getRow(int rowIndex) { vector<vector<int>>res(rowIndex+1); for(int i=0;i<=rowIndex;++i){ res[i].resize(i+1); res[i][0]=1; res[

2022-03-24 15:31:05 926

原创 leetcode-118. 杨辉三角-生成「杨辉三角」的前 numRows 行

一、题目二、思路res[i].resize(i+1)重设元素个数三、代码class Solution {public: vector<vector<int>> generate(int numRows) { vector<vector<int>>res(numRows); for(int i=0;i<numRows;++i){ res[i].resize(i+1);

2022-03-24 11:54:46 1127

原创 01背包-完全背包问题--每个物体可以多次选取

一、题目有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。二、思路三、代码// 先遍历物品,在遍历背包void test_CompletePack() { vector<int> weight = {1, 3, 4}; vector<int> value = {15, 20, 30}; int bagWe

2022-03-24 11:01:00 747

原创 01背包问题-每个物品只能选一次-动态规划dp[i][j]

一、题目有N件物品和一个最多能被重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。二、思路三、代码void test_2_wei_bag_problem1() { vector<int> weight = {1, 3, 4}; vector<int> value = {15, 20, 30}; int bagWeight = 4; /

2022-03-24 10:33:33 1897

原创 leetcode-链表中环的入口节点-第一次判断是否有环,第二次两个指针从(head,fast)同时开始遍历

一、题目题目描述对于一个给定的链表,返回环的入口节点,如果没有环,返回null拓展:你能给出不利用额外空间的解法么?二、思路1、一个快指针、一个慢指针2、再跑第二次3、注意fast!=NULL && fast->next!=NULL,如果没有后面那个,将会报出越界的错误三、代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *

2022-03-24 09:39:14 664

原创 leetcode-349. 两个数组的交集--公共部分--通过两个set数组去重,判断是否在set容器里

一、题目二、思路1、通过两个set数组去重2、判断是否在set容器里三、代码class Solution {public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { int size1=nums1.size(); int size2=nums2.size(); set<int>dic1

2022-03-21 22:12:26 344

原创 leetcode-搜索旋转数组中指定值--返回指定值下标--有重复元素

一、题目二、思路三、代码class Solution {public: int search(vector<int>& arr, int target) { int size=arr.size(); int left=0,right=size-1; int mid=0; while(left<=right){ mid=(left+right)/2; /

2022-03-21 21:59:18 322

原创 leetcode-81. 搜索旋转排序数组 II--查找指定值在不在--bool--有重复的元素

一、题目二、思路三、代码class Solution {public: bool search(vector<int> &nums, int target) { int n = nums.size(); if (n == 0) { return false; } if (n == 1) { return nums[0] == target;

2022-03-21 20:43:56 519

原创 leetcode-153. 寻找旋转排序数组中的最小值-平移数组--不含重复元素

一、题目二、思路三、代码class Solution {public: int findMin(vector<int>& nums) { int low = 0; int high = nums.size() - 1; while (low < high) { int pivot = low + (high - low) / 2; if (nums[pivot]

2022-03-20 19:59:03 253

原创 leetcode-154. 寻找旋转排序数组中的最小值 II--平移数组--有重复的数组

一、题目二、思路三、代码class Solution {public: int findMin(vector<int>& nums) { int low = 0; int high = nums.size() - 1; while (low < high) { int pivot = low + (high - low) / 2; if (nums[pivot]

2022-03-20 19:48:33 736

原创 leetcode-189. 轮转数组-旋转数组-平移数组

一、题目二、思路三、代码一class Solution {public: void rotate(vector<int>& nums, int k) { int size=nums.size(); k=k%size; reverse(nums.begin(),nums.end()); reverse(nums.begin(),nums.begin()+k); reverse(nums.be

2022-03-20 19:14:48 549

原创 leetcode-Lazada-输入多组数据,查找范围内的质数个数

一、题目输入多组数据,查找范围内的质数二、思路1、找到一个最大的右范围2、设置一个dp[maxnum+1],1表示是质数,0表示非质数;初始化都为13、当一个数是1,即为质数,那么从ii开始,每加一个i都是非质数,置为0for(int j=ii;j<=right;j+=i){dp[j]=0;}4、统计dp数组,动态规划ans[i]三、代码#include <iostream>#include <string.h>#include <string&

2022-03-18 11:02:57 439

原创 leetcode-剑指 Offer 54. 二叉搜索树的第k大节点

一、题目二、思路先遍历右子节点,在中,再左,。这样就从大到小排序了。十分简单。需要注意的是k值需要提出来,不要作为参数传,因为会导致数据不同步。三、代码class Solution { int max,k; public int kthLargest(TreeNode root, int k) { this.k = k; maxValue(root); return max; } void maxValue(Tree

2022-03-16 14:56:12 348

原创 leetcode-230. 二叉搜索树中第K小的元素-中序遍历

一、题目二、思路1、采用二叉树的中序遍历,先把所有的左子树添加进去,再开始计数到k三、代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int

2022-03-16 14:52:49 1143

原创 LeetCode 694. 不同岛屿的数量(DFS+set)

一、题目二、思路请你计算这个网格中共有多少个形状不同的岛屿。两个岛屿被认为是相同的,当且仅当一个岛屿可以通过平移变换(不可以旋转、翻转)和另一个岛屿重合。记录开始BFS或DFS的起点,后续点跟起点做差,存储路径到set中去重,返回 set 的大小三、代码class Solution { vector<vector<int>> dir = {{1,0},{0,1},{0,-1},{-1,0}}; int m, n; set<vector&

2022-03-16 09:52:32 285

原创 C++11atomic使用

2022-03-13 22:11:45 1496

原创 leetcode-剑指 Offer 32 - III. 从上到下打印二叉树 III-之字形打印二叉树

一、题目二、思路打印奇数层: 从左向右 打印,先左后右 加入下层节点;(根节点为奇数层)打印偶数层: 从右向左 打印,先右后左 加入下层节点;三、代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), righ

2022-03-13 19:34:44 1597

原创 LeetCode-面试题32 - I. 从上到下打印二叉树-层序遍历二叉树-从左到右

一、题目二、思路直接用层序遍历即可三、代码/** * 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: vecto

2022-03-13 18:46:34 497

原创 vector扩容时间复杂度

一、题目考虑vector每次内存扩充两倍的情况,插入n个数二、时间复杂度时间复杂度:扩容log(n)次,扩容时间复杂度2N,拷贝时间复杂度N,总的时间复杂度3N次扩充引起的元素拷贝次数为:

2022-03-13 12:01:13 1463 2

原创 leetcode-215. 数组中的第K个最大元素-topk-数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

一、题目二、思路三、代码class Solution {public: int findKthLargest(vector<int>& nums, int k) { int size=nums.size(); priority_queue<int>Que; for(int i=0;i<size;++i){ Que.push(nums[i]); } w

2022-03-13 11:14:13 581

原创 leetcode-347. 前 K 个高频元素-topk

一、题目二、思路1、用unordered_map容器统计个数2、将统计好的个数放入到优先队列,按个数排序3、从优先队列取出k个数到输出数组res中三、代码struct cmp{ bool operator()(pair<int,int>&a,pair<int,int>&b){ return a.first<b.first; }};class Solution {public: vector<int

2022-03-13 11:08:46 8578

原创 auto和decltype的配合使用

auto和decltype的配合使用template<typename T, typename U>auto add(T t, U u) -> decltype(t + u) { return t + u;}

2022-03-11 09:02:39 164

原创 function

1、绑定一个函数#include <iostream>#include <string.h>#include <string>#include <vector>#include <algorithm>#include <map>#include <stack>#include <set>#include <functional>#include <iostream>u

2022-03-10 22:28:12 85

原创 LeetCode-27. 移除元素-原地删除数组中指定值的元素-双指针

一、题目二、思路二、思路1、双指针2、右指针不等于时,左右指针同时往右移动;相等时,移动右指针三、代码class Solution {public: int removeElement(vector<int>& nums, int val) { //双指针解法 int left=0; int size=nums.size(); for(int i=0;i<size;++i){

2022-03-10 19:57:35 176

原创 leetcode-225. 用队列实现栈

一、题目二、思路三、代码class MyStack {public: queue<int>s,t; MyStack() { } void push(int x) { t.push(x); while(!s.empty()){ t.push(s.front()); s.pop(); } swap(s,t); }

2022-03-10 17:05:15 7672

原创 leetcode-232. 用栈实现队列-peek返回队列首个元素

一、题目二、思路三、代码class MyQueue {public: stack<int>s; stack<int>t; MyQueue() { } void push(int x) { while(!t.empty()){ s.push(t.top()); t.pop(); } s.push(x); }

2022-03-10 16:50:34 7530

原创 leetcode-204. 计数质数-埃氏筛-一个质数 x,从 x⋅x 开始标记 x⋅x +x一定为非质数,因此dp标记为0

一、题目二、思路1、创建一个辅助数组,1表示质数,0表示非质数2、一个质数 x,从 x⋅x 开始标记 x⋅x +x一定为非质数,因此dp标记为0三、代码class Solution {public: int countPrimes(int n) { //创建一个辅助数组,1表示质数,0表示非质数 vector<int>dp(n+1,1); int sum=0; for(int i=2;i<n;++i){

2022-03-10 12:08:04 86

原创 leetcode-152. 乘积最大子数组-同时维护最大正数和最小负数

一、题目二、思路1、//原本,dp[i]=max(dp[i-1]*nums[i],nums[i]);2、现在,加了负数后,求最大的值,最小的值3、同时维护一个最大值和最小值三、代码class Solution {public: int maxProduct(vector<int>& nums) { //比较三个数 int size=nums.size(); int Max_num=nums[0],Min_num=nu

2022-03-10 09:19:22 287

原创 leetcode-583. 两个字符串的删除操作-通过删除任意字符串使两个字符串匹配相等-求最少操作数

一、题目二、思路三、代码class Solution {public: int minDistance(string word1, string word2) { int len_1=word1.length(); int len_2=word2.length(); vector<vector<int>>dp(len_1+1,vector<int>(len_2+1,0)); for(int

2022-03-09 23:12:38 281

原创 单例模式(饿汉模式、懒汉模式)-设计模式

1、单例模式(饿汉模式)#include <iostream>using namespace std;class single{private: static single* p; single(){} ~single(){}public: static single* getinstance();};single* single::p = new single();single* single::getinstance(){ return p;}int

2022-03-09 21:21:24 204

原创 web服务器升序链表定时器

#ifndef LST_TIMER#define LST_TIMER#include <unistd.h>#include <signal.h>#include <sys/types.h>#include <sys/epoll.h>#include <fcntl.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h

2022-03-09 00:10:00 294

空空如也

空空如也

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

TA关注的人

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