面试金典
zj134_
以物喜
展开
-
面试题 01.07. 旋转矩阵
面试题 01.07. 旋转矩阵 - 力扣(LeetCode)一样的:LeetCode第 48 题:旋转图像(C++)_zj-CSDN博客class Solution {public: void rotate(vector<vector<int>>& matrix) { int m = matrix.size(); for(int i = 0; i < m; ++i){//转置,沿左上-右下对角线 f原创 2020-11-25 21:27:17 · 203 阅读 · 0 评论 -
面试题 01.06. 字符串压缩
面试题 01.06. 字符串压缩 - 力扣(LeetCode)相似题:LeetCode第 443 题:压缩字符串(C++)_zj-CSDN博客class Solution {public: string compressString(string S) { string res; int cnt = 1, n = S.size(); for(int i = 0; i < n; ++i){ if(i == n-1 |原创 2020-11-24 19:07:23 · 237 阅读 · 0 评论 -
面试题 01.05. 一次编辑
面试题 01.05. 一次编辑 - 力扣(LeetCode)LeetCode第 72 题:编辑距离(C++)_zj-CSDN博客的简单版本,照抄即可:class Solution {public: bool oneEditAway(string first, string second) { int m = first.size(), n = second.size(); if(abs(m-n) > 1) return false;原创 2020-11-18 22:17:15 · 231 阅读 · 0 评论 -
面试题 01.04. 回文排列
面试题 01.04. 回文排列 - 力扣(LeetCode)如果是某个回文串的排列之一,那么:所有字母个数均为偶数或者仅有一个字母个数为奇数(放在回文序列中间)。class Solution {public: bool canPermutePalindrome(string s) { int count[128] = {0}; for(const auto &c : s){//加1减1,不用累加数量 if(count[c] ==原创 2020-11-18 21:00:17 · 229 阅读 · 0 评论 -
面试题 01.03. URL化
面试题 01.03. URL化 - 力扣(LeetCode)开一个res,一遍遍历一遍存储结果:class Solution {public: string replaceSpaces(string S, int length) { string res; for(int i = 0; i < length; ++i){ if(isspace(S[i])) res += "%20"; else res原创 2020-11-18 20:34:02 · 183 阅读 · 0 评论 -
面试题 01.02. 判定是否互为字符重排
面试题 01.02. 判定是否互为字符重排 - 力扣(LeetCode)简单的哈希表思路,遍历计数即可:class Solution {public: bool CheckPermutation(string s1, string s2) { if(s1.size() != s2.size()) return false; int count[26] = {0}; for(int i = 0; i < s1.size(); ++i){原创 2020-11-18 19:09:30 · 157 阅读 · 0 评论 -
面试题 01.01. 判定字符是否唯一
面试题 01.01. 判定字符是否唯一 - 力扣(LeetCode)使用哈希表就会很简单,时空复杂度都是o(n)class Solution {public: bool isUnique(string astr) { bool flag[128] = {false}; for(const auto &c : astr){ if(!flag[c]) flag[c] = true; else retur原创 2020-11-18 18:36:51 · 163 阅读 · 0 评论 -
气球游戏
570. 气球游戏 - AcWing题库典型的滑动窗口思路:leetcode 第 76 题:最小覆盖子串(C++)_zj-CSDN博客#include <iostream>#include <vector>using namespace std;const int maxn = 1e6+10;const int maxm = 2010;int n, m;int a[maxn];int main(){ cin >> n >> m;原创 2020-09-06 15:18:00 · 339 阅读 · 0 评论 -
面试题 16.26. 计算器
面试题 16.26. 计算器 - 力扣(LeetCode)类似LeetCode第 224 题:基本计算器(C++)_zj-CSDN博客但是此题没有括号,有乘除法。一般都是使用栈,延迟计算,如果是加减就入栈(减号变为负数),乘除就出栈计算之后再入栈,最后全部只剩下加法,出栈一直累加即可。因为碰到乘除的时候,还需要后面的数字才能进行计算,所以延迟计算才是重点。例如碰到*的时候,乘号的左操作数在栈顶,右操作数是当前cur的值。class Solution {public: int calcul原创 2020-10-18 20:02:51 · 310 阅读 · 0 评论 -
面试题 08.08. 有重复字符串的排列组合
面试题 08.08. 有重复字符串的排列组合 - 力扣(LeetCode)回溯,去重:剑指 Offer 38. 字符串的排列_zj-CSDN博客class Solution {public: vector<string> res; string tmp; vector<string> permutation(string S) { sort(S.begin(), S.end()); backtrack(S);原创 2020-09-20 01:20:07 · 128 阅读 · 0 评论 -
面试题 04.01. 节点间通路 (C++)
面试题 04.01. 节点间通路 - 力扣(LeetCode)提示:节点数量n在[0, 1e5]范围内。节点编号大于等于 0 小于 n。图中可能存在自环和平行边。bfs,dfs均可:class Solution {public: vector<vector<int>> adj; bool findWhetherExistsPath(int n, vector<vector<int>>& graph, int start,原创 2020-08-24 16:48:08 · 247 阅读 · 0 评论 -
面试题 08.03. 魔术索引
面试题 08.03. 魔术索引 - 力扣(LeetCode)简单题class Solution {public: int findMagicIndex(vector<int>& nums) { for(int i = 0; i < nums.size(); ++i){ if(nums[i] == i) return i; } return -1; }};...原创 2020-07-31 10:48:35 · 95 阅读 · 0 评论 -
面试题 04.06. 后继者
面试题 04.06. 后继者 - 力扣(LeetCode)这儿的后继并不是常规意义下的后继,而是指二叉搜索树按照中序遍历的后继(中序后继),也就是说节点x的后继是中序遍历的顺序中节点x的下一个节点。借助外部空间那既然是中序遍历,简单的思路就是进行一遍中序遍历,把元素按顺序导入数组,最后在数组里面进行查找。class Solution {public: void inorder(TreeNode* root, vector<TreeNode*> &vec){原创 2020-07-22 15:36:59 · 175 阅读 · 0 评论 -
面试题 16.11. 跳水板
面试题 16.11. 跳水板 - 力扣(LeetCode)简单题,注意short <= longerclass Solution {public: vector<int> divingBoard(int shorter, int longer, int k) { if (k == 0) { return vector <int> (); } if (shorter == longer) {原创 2020-07-08 20:26:52 · 144 阅读 · 0 评论