自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode 3/剑指 48 最长不含重复字符的子字符串 哈希set的函数(count,insert)

https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/wu-zhong-fu-zi-fu-de-zui-chang-zi-chuan-by-leetc-2/class Solution {public: int lengthOfLongestSubstring(string s) { // 哈希集合,记录每个字符是否出现过 uno...

2021-09-12 15:40:08 179

原创 链表专题(2/21/61)

文章目录2. 两数相加(中等)直观笨办法(稍微还有点问题)2. 两数相加(中等)直观笨办法(稍微还有点问题)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode*

2021-09-11 16:04:06 131

转载 bfs最短路径总结 未完

原文链接:https://blog.csdn.net/weixin_44965308/article/details/104928695广度优先搜索顾名思义就是以迷宫里的无向图某一个点,借助队列,一层一层以该点为中心散开进行搜索,简单的BFS只能显示出最短路径的长度,这里探讨的就是如何实现BFS对最短路径的输出简单的BFS通过队列来实现,找到迷宫的起点(S)入队,出队列里面的队首,把队首上下左右相邻的点入队列,一直重复此操作,直到队列里面的所有元素都出队表示该迷宫不存在解,如果在队清空之前找到终点.

2021-09-10 11:56:47 187

原创 leetcode 322. 零钱兑换 背包问题

(本来想的是dfs不加一的那种 其实是背包问题 看来有些生疏了 一会去看一下dfs)https://leetcode-cn.com/problems/coin-change/solution/dai-ma-sui-xiang-lu-dai-ni-xue-tou-wan-q-80r7/这个递推公式的意思就是 如果取coins[i],那么硬币数量就是dp[j - coins[i]] + 1,其中dp数组是存储当前容量的,凑足总额为j 的最少个数为dp[j]递推公式:dp[j] = min(dp[..

2021-09-09 17:30:55 107

原创 leetcode 73. 矩阵置零 趋势科技手撕 将额外空间压缩到O(1)

文章目录方法一:标记数组方法二:使用两个标记变量方法三:使用一个标记变量方法一:标记数组class Solution {public: void setZeroes(vector<vector<int>>& matrix) { int m = matrix.size(); int n = matrix[0].size(); vector<int> row(m), col(n); fo

2021-08-29 17:53:25 54

原创 什么时候要用虚析构函数 父类指针指向子类对象||子类指针指向父类对象 (未整理)

文章目录虚析构函数父类指针指向子类对象||子类指针指向父类对象总结:虚析构函数《Effective C++ 》当派生类(derived class)对象由一个基类(base class)指针删除时,若基类有一个非虚函数(non-virtual)的析构函数时,其结果是未定义的——实际执行时通常发生的是对象的派生类部分没有被销毁。例如下面的示例:#include <iostream>using namespace std;class Shape{public: Shape(

2021-08-27 12:11:31 444

原创 c++重载、覆盖、隐藏的区别和执行方式

2021-08-27 10:42:02 52

原创 影响class类大小的因素 为什么静态函数不占用class的大小 类的成员函数 this指针

文章目录1.类的大小与什么有关系?2.空类3.一般类的大小(注意内存对齐)4.含虚函数的单一继承5 含虚函数的多重继承6. 菱形继承的问题及解决方案:虚拟继承1.类的大小与什么有关系? 与类大小有关的因素:普通成员变量,虚函数,继承(单一继承,多重继承,重复继承,虚拟继承) 与类大小无关的因素:静态成员变量,静态成员函数及普通成员函数2.空类空类即什么都没有的类,按上面的说法,照理说大小应该是0,但是,空类的大小为1,因为空类可以实例化,实例化必然在内存中占有一个位置,因此,编译器为其优化为一

2021-08-26 22:40:14 608

原创 leetcode 40. 组合总和 II used数组有点点抽象

题解:https://leetcode-cn.com/problems/combination-sum-ii/solution/dai-ma-sui-xiang-lu-dai-ni-xue-tou-hui-s-ig29/回溯三部曲分析完了,整体C++代码如下:class Solution {private: vector<vector<int>> result; vector<int> path; void backtra...

2021-08-25 16:03:47 80

原创 leetcode 39. 组合总和

class Solution {private: vector<vector<int>> res; vector<int> path; //int sum=0;public: void dfs(vector<int>& candidates,int n,int target,int sum){ if (sum > target) { return;//这里第一次忽视了 ..

2021-08-25 15:43:38 66

原创 leetcode 155. 最小栈

我写的class MinStack {private: stack<int> minStack; vector<int> all;//之后找最小元素的public: /** initialize your data structure here. */ MinStack() { } void push(int val) { minStack.push(val); all.push..

2021-08-25 10:34:46 56

原创 leetcode 242. 有效的字母异位词

想到的第一个方法是排序后比较class Solution {public: bool isAnagram(string s, string t) { //排序 if(s.size()!=t.size()) return false; if(s.size()==0&&t.size()==0) return true; sort(s.begin(),s.end()); sort(t.begin(),.

2021-08-25 10:07:50 44

原创 leetcode 198. 打家劫舍 经典dp 注意dp数组的范围

dp数组的大小应该为(n+1),其中n为nums的长度,因为第0位要存放n=0的时候的值 最后结果返回的是dp[n] 因为dp数组的最后一位的下标是nint rob(vector<int>& nums) { if (nums.size() == 0) { return 0; } // 子问题: // f(k) = 偷 [0..k) 房间中的最大金额 // f(0) = 0 // f(1) = nums[0]...

2021-08-24 18:46:51 97

原创 结构体(struct)和共用体(union)的区别(union转换大端小端)

结构体结构体是用户自定义的类型,同一个结构可以存储多种类型的数据。大小是内存对齐之后的各变量大小和共用体各成员共用一块内存空间,并且同时只有一个成员可以得到这块内存的使用权(对该内存的读写),各变量共用一个内存首地址。因而,联合体比结构体更节约内存。一个union变量的总长度至少能容纳最大的成员变量,而且要满足是所有成员变量类型大小的整数倍。对比代码1:对比struct和union占用内存大小#include<stdio.h>//结构体struct u //u表示结构体类型名

2021-08-24 17:00:07 445

原创 leetcode 283. 移动零 方法二很好

空间换时间(但是不符合题意 题意不能有辅助数组)//自己写的class Solution {public: void moveZeroes(vector<int>& nums) { if(nums.size()==0||nums.size()==1) return; vector<int> res(nums.size(),0); for(int i=0,j=0;i<nums.size();){ .

2021-08-24 11:24:42 50

原创 leetcode 787. K 站中转内最便宜的航班 bellford 不会

class Solution {private: static constexpr int INF = 10000 * 101 + 1;public: int findCheapestPrice(int n, vector<vector<int>>& flights, int src, int dst, int k) { vector<vector<int>> f(k + 2, vector<int...

2021-08-24 10:00:44 101

原创 leetcode 189. 旋转数组 整体旋转后再分块旋转

k %= nums.size();这句好妙 就是说你移动的距离k有可能大于数组的长度class Solution {public: void reverse(vector<int>& nums, int start, int end) { while (start < end) { swap(nums[start], nums[end]); start += 1; end

2021-08-24 09:33:25 181

原创 leetcode 70. 爬楼梯 经典dp

方法一:class Solution {public: int climbStairs(int n) { if (n == 1) return 1; if (n == 2) return 2; vector<int> res(n + 1); res[0]=0; res[1]=1; res[2]=2; for (int i = 3; i <= n; i++){ res[i] = res[i - 1] + res[i - 2]; } retur.

2021-08-23 21:24:02 48

原创 超详细的kmp算法 C语言版

讲的比较清楚的b站视频 和这个代码一致https://www.bilibili.com/video/BV1Px411z7Yo?from=search&seid=13622329823413177709https://www.bilibili.com/video/BV1hW411a7ys文章目录思路写代码前缀表next数组kmp思路1.首先制作一个前缀表对于每一个字符串找到它的最长公共前后缀列表去掉最后一个 剩下的往后移一位 第一位补-1 做为next数组补上数组下.

2021-08-23 18:48:28 528

原创 2021-08-20

2021-08-20 17:28:46 61

原创 荣耀笔试复盘第二题-

输出:

2021-08-20 17:28:24 430

原创 荣耀笔试复盘第一题-计算ID数量

快速幂算法long long fastPower(long long base, long long power) {//快速幂算法 避免直接乘溢出 long long result = 1; while (power > 0) { if (power & 1) {//此处等价于if(power%2==1) result = result * base % 1000; } power >>= 1;//此处等价于power=power/2 base ..

2021-08-20 11:51:30 394 1

原创 单例模式 看完linux相关再回来看

单例模式,就是设计一个类,我们只能生成该类的一个实例。而单例模式的实现方式有两种:懒汉模式和饿汉模式懒汉模式懒汉式是典型的时间换空间,也就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间。当然,如果一直没有人使用的话,那就不会创建实例,则节约内存空间。实现1、教科书构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类唯一的实例。class Sin

2021-08-19 15:42:50 55

原创 989. 数组形式的整数加法 多做这个和笔记里上一个提

class Solution {public: vector<int> addToArrayForm(vector<int>& num, int k) { vector<int> res; int n = num.size(); for (int i = n - 1; i >= 0; --i) { int sum = num[i] + k % 10; ..

2021-08-17 17:04:31 62

原创 leetcode 66. 加一 加法进位 这题很好 vector的insert

class Solution {public: vector<int> plusOne(vector<int>& digits) { for(int i=digits.size()-1;i>=0;i--) { ++digits[i]; if(digits[i]!=10) //如果该位没有继续产生进位,则直接return 结果 ...

2021-08-17 12:24:20 108

原创 1446. 连续字符 双指针 滑动窗

class Solution {public: int maxPower(string s) { //子字符串必须连续 int maxnum=1; int curr=1; for(int i=0,j=1;i<s.size(),j<s.size();){ while(s[i]==s[j]){ curr++; j++; .

2021-08-17 09:54:09 40

原创 科大讯飞笔试复盘

第一题给一个十进制数 将它变为二进制后 把第二个0变为1比如 10(1010)->14(1110)2(10)->6(110)这个不知道为啥只能a90#include<iostream>#include<string>#include<algorithm>#include<vector>#include<map>#include<unordered_set>#include<stack>#i

2021-08-15 22:12:17 72

原创 leetcode 141. 环形链表 (判断链表是否有环)

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: bool hasCycle(ListNode *head) { if(head==nullptr) return fal

2021-08-15 16:58:21 48

原创 leetcode 8. 字符串转换整数 (atoi)

class Solution {public: int myAtoi(string s) { int i=0; while(s[i]==' '){ i++; } if(s.size() == i || (('0'>s[i] || s[i] > '9' )&& s[i] != '+' && s[i] != '-')) return 0; int ...

2021-08-15 16:47:14 160

原创 leetcode 7. 整数反转 int越界处理

这个题最开始的想法是存在字符串里 不过太麻烦了 就看答案了class Solution {public: int reverse(int x) { int rev = 0; while (x != 0) { if (rev < INT_MIN / 10 || rev > INT_MAX / 10) { return 0; } int digit..

2021-08-15 12:36:36 79

原创 leetcode 6. Z 字形变换 flag数组

这个flag反向也太强了 这个没做过根本是想不到class Solution {public: string convert(string s, int numRows) { if(numRows==1){ return s;} vector<string> store(numRows);//直接往进存string 几行最后就是几个string int j=0; int flag=1;...

2021-08-15 12:12:14 62

原创 leetcode 3. 无重复字符的最长子串 哈希map和哈希set的使用

文章目录unordered_set常用函数两者的公共接口map的返回值map中find函数的使用把题理解错了 最长无重复字符的子串 要用滑动窗口滑动窗口这个右指针的分析好棒啊!class Solution {public: int lengthOfLongestSubstring(string s) { // 哈希集合,记录每个字符是否出现过 unordered_set<char> occ; int n = s.size()

2021-08-14 18:37:31 74

原创 leetcode 62. 不同路径 动态规划经典题 二维数组的初始化

也就是说把第一行和第一列放在动态规划方程中时的值是1 但如果他们是终点的话就不是1了 这和剪绳子那个题是一样的class Solution {public: int uniquePaths(int m, int n) { vector<vector<int>> f(m, vector<int>(n)); for (int i = 0; i < m; ++i) { f[i][0] = 1; ...

2021-08-14 14:46:56 66

原创 leetcode 11. 盛最多水的容器 移动短板

若向内 移动短板 ,水槽的短板 min(h[i], h[j]) 可能变大,因此下个水槽的面积 可能增大 。若向内 移动长板 ,水槽的短板 min(h[i], h[j]) 不变或变小,因此下个水槽的面积 一定变小 。class Solution {public: int maxArea(vector<int>& height) { int i = 0, j = height.size() - 1, res = 0; wh..

2021-08-13 22:06:16 70

原创 leetcode 45. 跳跃游戏 II 贪心 有点燃

方法二:正向查找可到达的最大位置//每次在上次能跳到的范围(end)内选择一个能跳到的最远位置(max_far)作为新的范围(end)class Solution {public: int jump(vector<int>& nums) { int max_far = 0;// 目前能跳到的最远位置 int step = 0; // 跳跃次数 int end = 0; // 上次跳跃可达范围右边界..

2021-08-13 20:57:14 54

原创 leetcode 55. 跳跃游戏 实时更新数组

数组中的元素是能跳的最大长度 也就是说你也可以不跳这么多class Solution {public: bool canJump(vector<int>& nums) { int n = nums.size(); int rightmost = 0; for (int i = 0; i < n; ++i) {//这个地方用auto会计算错误 因为后面再用下标计算 //而auto直接读的是当前的值 .

2021-08-13 17:19:46 50

原创 leetcode 22. 括号生成 暴力/递归回溯 忘写return居然速度提高?

文章目录自己写的暴力法回溯法(有条件递归)记着要返回上一级递归 不然会内存泄露#include<iostream>#include<string>#include<algorithm>#include<vector>using namespace std;class Solution { bool valid(const string& str) { int balance = 0; for (char c : str) {

2021-08-13 16:27:06 526

原创 leetcode 5. 最长回文子串 中心扩展法 while判断语句的顺序

class Solution {public: string longestPalindrome(string s) { int size=s.size(); int length=0; string ans; for(int i=0;i<size;i++){ int l1=i-1; int r1=i+1;//奇数中心 while(l1>=0&am..

2021-08-13 14:20:21 52

原创 leetcode 88. 合并两个有序数组

暴力sort的解法就不说了class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int p1 = m - 1, p2 = n - 1; int tail = m + n - 1; int cur; while (p1 >= 0 || p2 >= 0) .

2021-08-12 15:14:24 119

原创 大华一面面经复盘

自我介绍 这个倒是听我说完了项目介绍 这个没说完打断我 我甚至只介绍了有什么功能 功能的具体实现还没说就打断了说学mfc没有前途 还是去学qt吧mfcDBX/DBV:查都查不到如何让模态框一直置顶:我答的是在对对话框编辑的时候侧面添加控件的地方应该可以设置。updatedata函数:是MFC的窗口函数,用来刷新数据的,操作系统会调用这个函数来初始化对话框中的数据,或者检索或者验证对话框中的数据。onpaint:(1)OnPaint是WM_PAINT消息的消息处理函数,在On

2021-08-11 11:02:29 105

空空如也

空空如也

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

TA关注的人

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