自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 358-C++、Linux必备知识点

111

2022-05-30 15:41:52 307 2

原创 357-C++、Linux必备知识点

1.int a=4,则对于表达式++(a++)的结果为?答案:不是5!编译不通过,a++的结果为4,++4是不正确的,4是右值,如果改成++(b = a++);结果就是5了2.若变量a是int类型,并执行了语句a=’A’+1.6;则正确的结果是?a的值是字符’A’的ASCⅡ值加上13.decltype和auto都可以用来推断类型,但是二者有几处明显的差异1.auto忽略顶层const,decltype保留顶层const2.对引用操作,auto推断出原有类型,decltype推断出引用3.对解引

2022-05-19 16:48:58 750

原创 356-Leetcode 删除链表的倒数第N个节点

下面程序需要对如果删除的是第一个节点要进行判断,所以需要计算整个链表的长度struct ListNode{ int val; ListNode* next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x, ListNode* next) : val(x), next(next) {}};class Solution{public: int.

2022-05-13 16:27:31 434

原创 355-Leetcode 外观数列

class Solution {public: string countAndSay(int n) { string st = "1"; for (int i = 2; i <= n; ++i) { string cur = ""; int start = 0; int pos = 0; while (pos < st.size()) { while (pos < st.size() && st[pos] == s.

2022-05-13 11:07:07 175

原创 354-Leetcode 四数之和

class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int>> vec; if (nums.size() < 4) { return vec; } sort(nums.begin(), nums.end()); int length = nums.s.

2022-05-12 17:11:08 120

原创 353-Leetcode 最接近的三数之和

class Solution {public: int threeSumClosest(vector<int>& nums, int target) { sort(nums.begin(), nums.end()); int n = nums.size(); int best = 1e7; // 根据差值的绝对值来更新答案 auto update = [&](int cur) { if (abs(cur - target) < .

2022-05-12 16:53:47 132

原创 352-Leetcode 三数之和

class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { int n = nums.size(); sort(nums.begin(), nums.end()); vector<vector<int>> ans; // 枚举 a for (int first = 0; first < n; ++first) .

2022-05-10 17:22:07 176

原创 351-Leetcode 整数反转

INT_MIN在标准头文件limits.h中定义#define INT_MAX 2147483647#define INT_MIN (-INT_MAX - 1)class Solution{public: int reverse(int x) { int count = 0; while (x != 0) { if (count < INT_MIN / 10 || count > INT_MAX / 10) { return 0; } .

2022-05-10 17:07:08 126

原创 350-Leetcode 括号生成

算法:如果左括号数量小于 n,我们可以放一个左括号。如果右括号数量小于左括号的数量,我们可以放一个右括号class Solution { void backtrack(vector<string>& ans, string& cur, int open, int close, int n) { if (cur.size() == n * 2) { ans.push_back(cur); return; } if (open < n).

2022-05-10 16:48:07 153

原创 347-Leetcode 多数元素

方法一:Boyer-Moore 投票算法如果我们把众数记为 +1,把其他数记为 −1,将它们全部加起来,显然和大于 0,从结果本身我们可以看出众数比其他数多class Solution {public: int majorityElement(vector<int>& nums) { int tmp = -1; int count = 0; for (auto& x : nums) { if (x == tmp) { ++coun.

2022-04-25 17:34:44 186

原创 345-Leetcode 赎金信

如果ransomNote的长度要比magazine要长,那肯定是错误的先遍历magazine,统计每个字符出现的次数,再遍历 ransomNote,每次将数组中对应的字符的个数减一,如果减一以后的值小于0了,说明数组中已经没有这个字符了,那么就是错误的class Solution {public: bool canConstruct(string ransomNote, string magazine) { int len1 = ransomNote.size(); int len2 .

2022-04-22 17:33:13 227

原创 344-Leetcode 二叉树的所有路径

算法:我们也可以用广度优先搜索来实现。我们维护一个队列,存储节点以及根到该节点的路径。一开始这个队列里只有根节点。在每一步迭代中,我们取出队列中的首节点,如果它是叶子节点,则将它对应的路径加入到答案中。如果它不是叶子节点,则将它的所有孩子节点加入到队列的末尾。当队列为空时广度优先搜索结束,我们即能得到答案struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode() : val(0), left(nullptr), r.

2022-04-22 16:40:26 1314

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

方法一:双指针class Solution {public: string reverseVowels(string s) { unordered_map<char, int> map { {'a',1}, { 'e',1 }, { 'i',1 }, { 'o',1 }, { 'u',1 }, { 'A',1 }, { 'E',1 }, { 'I',1}, { 'O',1 }, { 'U',1 }, }; .

2022-04-22 11:45:30 1023

原创 342-Leetcode 字符串中的第一个唯一字符

方法一:使用哈希表存储频数class Solution {public: int firstUniqChar(string s) { unordered_map<char, int> map; for (auto& ch : s) { ++map[ch]; } int len = s.size(); for (int i = 0; i < len; ++i) { if (map[s[i]] == 1) { retu.

2022-04-22 11:18:05 100

原创 341-Linux 连接数据库

1.service mysql status 可以查看服务器(数据库)是否启动数据库在开机默认情况下就是启动的启动数据库:service mysql start重新启动数据库:service mysql restart停止数据库:service mysql stop本地连接数据库:mysql -uroot -p密码远程连接数据库:mysql -uroot -h192.168.0.0 -p密码2.show databases;可以显示都有哪些数据库3.root和stu2就是用户名,%表示远程登

2022-04-21 22:31:05 4935

原创 340-Leetcode 有效的字母异位词

方法一:排序class Solution {public: bool isAnagram(string s, string t) { int len1 = s.size(); int len2 = t.size(); if (len1 != len2)return false; sort(s.begin(), s.end()); sort(t.begin(), t.end()); return s == t; }};int main(){ Solution A.

2022-04-21 17:43:37 1850

原创 339-Leetcode 单词规律

class Solution {public: bool wordPattern(string pattern, string s) { unordered_map<char, string> ch2str; unordered_map<string, char> str2ch; int len = s.size(); int i = 0; for (auto ch : pattern) { if (i > len) { .

2022-04-21 16:59:39 194

原创 338-Leetcode 同构字符串

class Solution{public: bool isIsomorphic(string s, string t) { unordered_map<char, char> st; unordered_map<char, char> ts; int len = s.size(); for (int i = 0; i < len; ++i) { char x = s[i], y = t[i]; if ((st.count(x) &am.

2022-04-21 15:15:15 308

原创 337-Leetcode 电话号码的组合

方法一:回溯首先使用哈希表存储每个数字对应的所有可能的字母,然后进行回溯操作回溯过程中维护一个字符串,表示已有的字母排列(如果未遍历完电话号码的所有数字,则已有的字母排列是不完整的)。该字符串初始为空。每次取电话号码的一位数字,从哈希表中获得该数字对应的所有可能的字母,并将其中的一个字母插入到已有的字母排列后面,然后继续处理电话号码的后一位数字,直到处理完电话号码中的所有数字,即得到一个完整的字母排列。然后进行回退操作,遍历其余的字母排列回溯算法用于寻找所有的可行解,如果发现一个解不可行,则会舍弃不.

2022-04-20 09:27:33 186

原创 336-Leetcode 整数转罗马数字

class Solution{public: string intToRoman(int num) { string s; while (num != 0) { while (num >= 1000) { s += 'M'; num -= 1000; } while (num >= 900) { s += 'C'; s += 'M'; num -= 900; } while (num >.

2022-04-20 08:47:46 118

原创 335-Leetcode 反转字符串

class Solution {public: void reverseString(vector<char>& s) { int len = s.size(); for (int left = 0, right = len - 1; left < right; ++left, --right) { swap(s[left], s[right]); } }};int main(){ Solution A; vector<char.

2022-04-19 17:22:04 500

原创 334-Leetcode 字符串转换整数(atoi)

class Solution{public: int myAtoi(string s) { int len = s.size(); long long int tmp = 0; bool flag = true;//正数 for (int i = 0; i < len; ++i) { while (s[i] == ' ') { ++i; continue; } if (s[i] == '-') { flag = fal.

2022-04-19 17:08:50 102

原创 333-Leetcode 无重复字符的最长字串

class Solution {public: int lengthOfLongestSubstring(string s) { unordered_set<char> set; int len = s.size(); int right = -1; int count = 0; for (int i = 0; i < len; ++i) { if (i != 0) { set.erase(s[i - 1]); } whi..

2022-04-19 13:48:04 85

原创 332-Leetcode 最小栈

方法一:辅助栈创建一个辅助栈,保存最小值,每次入栈的时候,我们把辅助栈顶和要入的值两者中的最小值入栈class MinStack {private: stack<int> x_stack; stack<int> min_stack;public: MinStack() { min_stack.emplace(INT_MAX); } void push(int val) { min_stack.emplace(min(min_stack.top().

2022-04-19 13:21:28 217

原创 331-Leetcode 颠倒二进制位

方法一:逐位颠倒class Solution {public: uint32_t reverseBits(uint32_t n) { uint32_t count = 0; for (int i = 0; i < 32 && n>0; ++i) { count |= (n & 1) << (31 - i); n >>= 1; } return count; }};int main(){ Sol.

2022-04-19 11:01:37 142

原创 330-Leetcode Excel表列名称

class Solution {public: string convertToTitle(int columnNumber) { string ans; while (columnNumber > 0) { int a0 = (columnNumber - 1) % 26 + 1; ans += a0 - 1 + 'A'; columnNumber = (columnNumber - a0) / 26; } reverse(ans.begin(), a..

2022-04-17 16:00:36 617

原创 329-Leetcode Excel 表列序号

class Solution {public: int titleToNumber(string columnTitle) { int number = 0; long int multiple = 1; int len = columnTitle.size(); for (int i = len - 1; i >= 0; --i) { int k = columnTitle[i] - 'A' + 1; number += k * multiple; .

2022-04-17 15:43:23 231

原创 328-Leetcode 统计位1的个数

方法一:循环检查二进制位我们可以直接循环检查给定整数 n 的二进制位的每一位是否为 1具体代码中,当检查第 i 位时,我们可以让 n 与 2^i 进行与运算,当且仅当 n 的第 i 位为 1 时,运算结果不为 0class Solution{public: int hammingWeight(uint32_t n) { int count = 0; for (int i = 0; i < 32; ++i) { if (n & (1 << i)).

2022-04-17 15:24:16 530

原创 327-Leetcode 环形链表

方法一:哈希表用哈希表来存储所有已经访问过的节点。每次我们到达一个节点,如果该节点已经存在于哈希表中,则说明该链表是环形链表,否则就将该节点加入哈希表中。重复这一过程,直到我们遍历完整个链表即可struct ListNode{ int val; ListNode* next; ListNode(int x) : val(x), next(NULL) {}};class Solution{public: bool hasCycle(ListNode* head) { if (he.

2022-04-17 15:06:50 61

原创 326-Leetcode 验证字符串是否为回文串

方法一:筛选+逆向判断class Solution {public: bool isPalindrome(string s) { string tmp; for (auto& x : s) { if (isalnum(x)) { tmp += tolower(x); } } string tmp_tmp(tmp.rbegin(), tmp.rend()); return tmp_tmp == tmp; }};int main(){.

2022-04-16 23:08:41 312

原创 325-Leetcode 二叉树的后序遍历

方法一:递归struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeNode(int x, TreeNode* left, TreeNode* right) : val(x), left(left).

2022-04-15 16:29:48 909

原创 324-Leetcode 二叉树的前序遍历

方法一:递归struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeNode(int x, TreeNode* left, TreeNode* right) : val(x), left(left).

2022-04-15 15:27:45 557

原创 332-Leetcode 只出现一次的数字

如果不考虑时间复杂度和空间复杂度的限制,这道题有很多种解法,可能的解法有如下几种:①使用集合存储数字遍历数组中的每个数字,如果集合中没有该数字,则将该数字加入集合,如果集合中已经有该数字,则将该数字从集合中删除,最后剩下的数字就是只出现一次的数字②哈希表使用哈希表存储每个数字和该数字出现的次数。遍历数组即可得到每个数字出现的次数,并更新哈希表,最后遍历哈希表,得到只出现一次的数字。③记录出现数字的总和使用集合存储数组中出现的所有数字,并计算数组中的元素之和。由于集合保证元素无重复,因此计算集合.

2022-04-15 09:36:14 87

原创 331-Leetcode 买卖的股票的最佳时机

方法一:暴力法两次for循环,一个一个比较,找出最大利润class Solution {public: int maxProfit(vector<int>& prices) { int len = prices.size(); int max_profit = 0; for (int i = 0; i < len; ++i) { for (int j = i + 1; j < len; ++j) { max_profit =.

2022-04-15 09:22:39 96

原创 330-Leetcode 杨辉三角 II

方法一:滚动数组class Solution {public: vector<int> getRow(int rowIndex) { vector<int> ve; ve.resize(rowIndex + 1); for (int i = 0; i <= rowIndex; ++i) { for (int j = rowIndex; j >= 0; --j) { if (j == rowIndex || j == 0).

2022-04-15 08:56:25 215

原创 329-Leetcode 杨辉三角

杨辉三角的每行数字左右对称,由 1 开始逐渐变大再变小,并最终回到 1class Solution {public: vector<vector<int>> generate(int numRows) { vector<vector<int>> ve(numRows); for (int i = 0; i < numRows; ++i) { for (int j = 0; j <= i; ++j) { .

2022-04-14 17:43:29 141

原创 328-Leetcode 路径总和

方法一:递归若当前节点就是叶子节点,那么我们直接判断 sum 是否等于 val 即可(因为路径和已经确定,就是当前节点的值,我们只需要判断该路径和是否满足条件)。若当前节点不是叶子节点,我们只需要递归地询问它的子节点是否能满足条件即可struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x.

2022-04-14 17:23:45 64

原创 327-Leetcode 二叉树的最小深度

方法一:深度优先搜索对于每一个非叶子节点,我们只需要分别计算其左右子树的最小叶子节点深度,当左右节点都为空时,返回1struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeNode(int .

2022-04-14 16:49:27 106

原创 326-Leetcode 将有序数组转换为二叉搜索树

二叉搜索树的中序遍历是升序序列,题目给定的数组是按照升序排序的有序数组,因此可以确保数组是二叉搜索树的中序遍历序列给定二叉搜索树的中序遍历,是否可以唯一地确定二叉搜索树?答案是否定的。如果没有要求二叉搜索树的高度平衡,则任何一个数字都可以作为二叉搜索树的根节点,因此可能的二叉搜索树有多个如果增加一个限制条件,即要求二叉搜索树的高度平衡,是否可以唯一地确定二叉搜索树?答案仍然是否定的直观地看,我们可以选择中间数字作为二叉搜索树的根节点,这样分给左右子树的数字个数相同或只相差 1,可以使得树保持平衡。.

2022-04-14 16:18:06 136

原创 325-Leetcode 二叉树的最大深度

方法一:深度优先搜索算法:max(height(root->left),height(root->right))+1struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeNode(i.

2022-04-14 15:50:17 62

空空如也

空空如也

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

TA关注的人

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