刷题
刷题
stone_fall
程序员+宅男
展开
-
C++秋招刷题 | 动态规划与背包问题
文章目录动态规划斐波那契数列斐波那契数第 N 个泰波那契数丑数丑数Ⅱ杨辉三角杨辉三角杨辉三角Ⅱ爬楼梯爬楼梯最小花费爬楼梯买卖股票买卖股票的最佳时机买卖股票的最佳时机 II最佳买卖股票时机含冷冻期买卖股票的最佳时机含手续费打家劫舍打家劫舍1打家劫舍2背包问题完全背包购物车零钱兑换零钱兑换 II子序列最大和最大子序和环形子数组的最大和回文最长回文子串最长回文子序列递增子序列解码解码方法二叉搜索树不同的二叉搜索树不同的二叉搜索树Ⅱ路径问题下降路径最小和三角形最小路径和不同路径不同路径 II最小路径和最大正方形编辑原创 2021-09-26 10:41:42 · 433 阅读 · 0 评论 -
华为笔试2021.9.11
文章目录求神经网络的最短执行时间内存管理2个数组里相同公差的最长等差数列牛客帖子汇总的求神经网络的最短执行时间给出N个节点,每个节点的信息包含该节点执行时间、下一个节点列表。有向无环图求一个拓扑排序#include <bits/stdc++.h>using namespace std;//邻接表建图vector<vector<int>> g;//构建costvector<int> cost;vector<int> cnt; /原创 2021-09-18 12:33:38 · 790 阅读 · 0 评论 -
力扣网 | 高频面试题 | 最长回文子串 | 最长回文子序列
文章目录最长回文子序列题目解析最长回文子串题目解析两道题很相近,区别在于一个是子串,一个是子序列子序列子串最长回文子序列题目最长回文子序列 - 力扣(LeetCode)https://leetcode-cn.com/problems/longest-palindromic-subsequence/解析class Solution {public: int longestPalindromeSubseq(string A) { //dp原创 2021-04-01 08:47:48 · 158 阅读 · 0 评论 -
牛客网 | 每日一题 3-25 | 82. 删除排序链表中的重复元素 II
文章目录题目解析题目存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。返回同样按升序排列的结果链表。82. 删除排序链表中的重复元素 II - 力扣(LeetCode)解析链表题:舍得用变量,千万别想着节省变量,否则容易被逻辑绕晕head 有可能需要改动时,先增加一个 假head,返回的时候直接取 假head.next,这样就不需要为修改 head 增加一大堆逻辑了。/** * Definition原创 2021-03-25 21:26:23 · 193 阅读 · 0 评论 -
力扣网 | 算法面试题汇总 | 最长公共子序列
文章目录题目解析题目1143. 最长公共子序列给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。解析dpclas原创 2021-03-06 18:34:37 · 117 阅读 · 0 评论 -
牛客网 | 高频面试题 | 最长公共子串
文章目录题目解析题目最长公共子串_牛客题霸_牛客网题目描述给定两个字符串str1和str2,输出两个字符串的最长公共子串题目保证str1和str2的最长公共子串存在且唯一。示例1输入"1AB2345CD","12345EF"返回值"2345"解析动态规划dp[i][j],i代表str1[i]结尾的串,j代表str2[j]结尾的串,dp[i][j]代表此时最长公共子串长度str1[i-1]==str2[j-1] : dp[i][j]=dp[i-1][j-1]+1;str1[i原创 2021-03-06 18:07:19 · 325 阅读 · 0 评论 -
牛客网 | 高频面试题 | 链表中环的入口节点
文章目录题目解析题目链表中环的入口节点_牛客题霸_牛客网题目描述对于一个给定的链表,返回环的入口节点,如果没有环,返回null拓展:你能给出不利用额外空间的解法么?解析如下图所示,X,Y,Z分别为链表起始位置,环开始位置和两指针相遇位置,则根据快指针速度为慢指针速度的两倍,可以得出:2*(a + b) = a + b + n * (b + c);即a=(n - 1) * b + n * c = (n - 1)(b + c) +c;注意到b+c恰好为环的长度,故可以推出,如将此时两指针原创 2021-03-02 12:40:27 · 106 阅读 · 0 评论 -
牛客网 | 高频面试题 | 判断二叉树是否对称
文章目录题目解析题目判断二叉树是否对称_牛客题霸_牛客网题目描述给定一棵二叉树,判断琪是否是自身的镜像(即:是否对称)例如:下面这棵二叉树是对称的 1 / \ 2 2 / \ / \3 4 4 3下面这棵二叉树不对称。 1 / \ 2 2 \ \ 3 3备注:希望你可以用递归和迭代两种方法解决这个问题解析只需要区分好边界条件,每次比对val值即可;只有当两个节点都存在才可以比对val,不一原创 2021-03-02 11:16:47 · 137 阅读 · 0 评论 -
牛客网 | 高频面试题 | 链表中的节点每k个一组翻转
文章目录题目解析题目将给出的链表中的节点每\ k k 个一组翻转,返回翻转后的链表如果链表中的节点数不是\ k k 的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。要求空间复杂度 \ O(1) O(1)例如:给定的链表是1\to2\to3\to4\to51→2→3→4→5对于 \ k = 2 k=2, 你应该返回 2\to 1\to 4\to 3\to 52→1→4→3→5对于 \ k = 3 k=3, 你应该返回 3\to2 \to1 \to 4\to 53→2→原创 2021-02-01 12:14:09 · 373 阅读 · 1 评论 -
剑指offer | 复杂链表的复制
文章目录题目解析HashMap题目剑指 Offer 35. 复杂链表的复制 - 力扣(LeetCode)https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof/解析通过next复制链表比较容易,题目难在怎么关联random指针,我们可以通过map保存原节点到新节点的映射关系,通过访问原节点的random来获取对应的新节点HashMapclass Solution {public: Node* copyRando原创 2021-01-27 12:14:46 · 108 阅读 · 0 评论 -
牛客网 | 高频面试题 | 排序
题目排序_牛客网给定一个数组,请你编写一个函数,返回该数组排序后的形式。题解快排找到哨兵的两种交换思路。(其实都一样哈哈哈哈)class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 将给定数组排序 * @param arr int整型vector 待排序的数组 * @return int整型vector */ vector<int> M原创 2021-01-27 09:50:44 · 576 阅读 · 0 评论 -
牛客网 | 高频面试题 | 二叉树的之字形层序遍历
文章目录题目解析题目二叉树的之字形层序遍历_牛客网解析层次遍历改动:根据层数判断是否翻转vector/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */class Solution {public: /** * * @param root TreeNode类 * @return int整型vector<原创 2021-01-26 09:49:49 · 225 阅读 · 0 评论 -
牛客网 | 高频面试题 | 树的直径
文章目录题目解析题目树的直径_牛客网题目描述给定一棵树,求出这棵树的直径,即树上最远两点的距离。示例1的树如下图所示。其中4到5之间的路径最长,是树的直径,距离为5+2+4=11示例1输入复制6,[[0,1],[1,5],[1,2],[2,3],[2,4]],[3,4,2,1,5]返回值复制11解析先遍历树,构建一个无向图~后序遍历更新树的直径。某节点直径=左孩子深度+右孩子深度/** * struct Interval { * int start; * int e原创 2021-01-22 23:41:33 · 346 阅读 · 0 评论 -
力扣网 | 算法面试题汇总 | 字符串 | 字符串拼接 Ⅱ
文章目录题目解析题目算法面试题汇总 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode-cn.com/leetbook/read/top-interview-questions/xa9v8i/给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说明:分隔时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:原创 2021-01-19 17:38:00 · 222 阅读 · 0 评论 -
力扣网 | 算法面试题汇总 | 字符串 | 单词拆分
文章目录题目题解题目算法面试题汇总 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode-cn.com/leetbook/read/top-interview-questions/xa503c/给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetco原创 2021-01-16 13:43:25 · 525 阅读 · 0 评论 -
力扣网 | 算法面试题汇总 | 字符串 | 分割回文串
文章目录题目解析题目分割回文串算法面试题汇总 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台解析class Solution { vector<vector<string>> res; vector<string> path;public: void backtracking(const string s,int startindex){ //判出 if(startindex&g原创 2021-01-15 09:36:52 · 169 阅读 · 0 评论 -
牛客网 | 高频面试题 | 重建二叉树
文章目录题目题解递归题目重建二叉树_牛客网题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。示例1输入[1,2,3,4,5,6,7],[3,2,4,1,6,5,7]返回值{1,2,5,3,4,6,7}题解递归通过一个map记录中序遍历每个元素出现的位置,减少递归时查找所需的时间按照正原创 2021-01-14 00:05:22 · 150 阅读 · 0 评论 -
力扣网 | 算法面试题汇总 | 字符串 | 验证回文串
文章目录题目解析方法一:利用额外空间保存转化后的结果方法二:在原字符串上比较题目解析方法一:利用额外空间保存转化后的结果tolower() 将字符传化成小写isalnum() 判断字符是否是字母或数字class Solution {public: bool isPalindrome(string s) { string shandled;//用来存储转化后的字符与小写字母 for(auto c:s){ if(isalnum(c原创 2021-01-12 09:27:08 · 156 阅读 · 0 评论 -
牛客网 | 高频面试题 | 进制转换
文章目录题目解析题目给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数示例1输入7,2返回值"111"解析先判断正负,负数最后答案返回时加个负号就好了;循环M/N,当M/N>9时需要分情况讨论class Solution {public: /** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */原创 2021-01-10 13:11:49 · 170 阅读 · 0 评论 -
牛客网 | 高频面试题 | 容器盛水问题
文章目录题目解析题目题目描述给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个容器,请返回容器能装多少水。具体请参考样例解释示例1输入复制[3,1,2,5,2,4]返回值复制5说明示例2输入[4,5,1,3,2]返回值2解析通过遍历求出arr[i],左端和右端最大值;最后计算总容水量class Solution {public: /** * max water * @param arr int整型vector t原创 2021-01-09 20:03:29 · 458 阅读 · 0 评论 -
牛客网 | 高频面试题 | 合并有序链表
文章目录题目解析循环题目合并有序链表_牛客网题目描述将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的,且合并后新链表依然有序。示例1输入{1},{2}返回值{1,2}示例2输入{2},{1}返回值{1,2}解析循环/** * struct ListNode { * int val; * struct ListNode *next; * }; */class Solution {public: /** *原创 2021-01-07 18:08:11 · 106 阅读 · 0 评论 -
力扣网 | 算法面试题汇总 | 开始之前 | 鸡蛋掉落
文章目录题目解析题目算法面试题汇总 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <原创 2021-01-07 11:43:30 · 436 阅读 · 0 评论 -
力扣网/牛客网 | 算法面试题汇总 | 合并两个有序数组
文章目录题目解析双指针-从前往后遍历从前往后-空间换时间从后往前遍历题目算法面试题汇总 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例:输入:原创 2021-01-06 09:49:53 · 177 阅读 · 0 评论 -
力扣网 | 算法面试题汇总 | 开始之前 | 搜索二维矩阵 II
文章目录题目解析暴力剪枝二分法题目算法面试题汇总 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台解析暴力class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { int m = matrix.size(), n = matrix[0].size(); for(int i=0;i<原创 2021-01-05 09:23:26 · 136 阅读 · 0 评论 -
牛客网 | 高频面试题 | 两数之和
文章目录题目解析暴力——o(n^2)哈希表——o(n)题目两数之和_牛客网题目描述给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解例如:给出的数组为 {20, 70, 110, 150},目标值为90输出 index1=1, index2=2示例1输入[3,2,4],6返回值[2,3]解析原创 2021-01-04 09:22:57 · 166 阅读 · 0 评论 -
力扣网 | 算法面试题汇总 | 开始之前 | LC 多数元素
文章目录题目解析题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2 进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。解析class Solution {public: int majorityElement(ve原创 2021-01-02 12:26:38 · 159 阅读 · 0 评论 -
力扣网 | 算法面试题汇总 | 开始之前 | LC 只出现一次的数字
文章目录题目解析题目 LC 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解析异或运算,得到结果。利用异或运算的交换律、结合律、自反率a^b^a = bclass Solution {public: int singleN原创 2021-01-02 12:09:28 · 142 阅读 · 0 评论 -
力扣网 | 每日打卡题 |188. 买卖股票的最佳时机 IV
文章目录题目解析题目188. 买卖股票的最佳时机 IV解析在这里插入代码片原创 2020-12-29 09:02:14 · 245 阅读 · 0 评论 -
牛客网 | 高频面试题 | 子数组的最大累加和问题
文章目录题目解析题目子数组的最大累加和问题_牛客网解析用cur记录当前数组和(只要cur大于0,就对求最大累加和有正向的贡献)arrmax记录最大curclass Solution {public: /** * max sum of the subarray * @param arr int整型vector the array * @return int整型 */ int maxsumofSubarray(vector<int&原创 2020-12-27 11:41:46 · 167 阅读 · 0 评论 -
力扣网 | 每日打卡题 | 205. 同构字符串
文章目录题目解析哈希官方解答-哈希题目205. 同构字符串 - 力扣(LeetCode)解析哈希笨拙的方式通过两个hash记录状态。charmap记录字符替换方案charintmap确保两个字符不能映射到同一个字符上class Solution {public: bool isIsomorphic(string s, string t) { int lens=s.size(),lent=t.size(); if(lens!=lent)retur原创 2020-12-27 10:28:17 · 126 阅读 · 0 评论 -
力扣网 | 每日打卡题 | 455. 分发饼干 | 圣诞节的饼干
文章目录题目解析题目455. 分发饼干 - 力扣(LeetCode)解析分发饼干 - 分发饼干 - 力扣(LeetCode)class Solution {public: int findContentChildren(vector<int>& g, vector<int>& s) { sort(g.begin(), g.end()); sort(s.begin(), s.end()); int nu原创 2020-12-25 14:47:44 · 144 阅读 · 0 评论 -
牛客网 | 高频面试题 | 寻找第K大
文章目录题目解析冒泡法快排法题目寻找第K大_牛客网有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。示例1输入[1,3,5,2,2],5,3返回值2解析冒泡法和这篇博客思路类似牛客网 | 高频面试题 | 最小的K个数_我是一块小石头-CSDN博客K轮冒泡排序~即可class Finder {public: int findKth(vector<i原创 2020-12-23 09:58:05 · 146 阅读 · 0 评论 -
力扣网 | 每日打卡题 | 387. 字符串中的第一个唯一字符
文章目录题目解析题目387. 字符串中的第一个唯一字符 - 力扣(LeetCode)解析用map记录每个元素c出现的位置,并且如果元素c重复出现令map[c]=-1最后遍历map返回第一个value非-1的元素c的位置class Solution {public: int firstUniqChar(string s) { unordered_map<char,int> c2imap; for(int i=0;i<s.size();原创 2020-12-23 09:11:36 · 185 阅读 · 0 评论 -
牛客网 | 高频面试题 | 层序遍历
文章目录题目解析题目求二叉树的层序遍历_牛客网解析用levelsize记录每层元素即可/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */class Solution {public: /** * * @param root TreeNode类 * @return int整型vector<vect原创 2020-12-22 09:58:19 · 113 阅读 · 0 评论 -
力扣网 | 每日打卡题 | 103. 二叉树的锯齿形层序遍历
文章目录题目解析层次遍历——翻转记录数组官方解答——双向队列deque题目103. 二叉树的锯齿形层序遍历 - 力扣(LeetCode)解析层次遍历——翻转记录数组用levelsize记录每层的节点数;用vtmp正常遍历顺序记录每层节点;用flag记录单双层,用于翻转vtmp;/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *原创 2020-12-22 08:57:29 · 169 阅读 · 0 评论 -
牛客网 | 高频面试题 | 大数加法
文章目录题目题解题目以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。(字符串长度不大于100000,保证字符串仅由’0’~'9’这10种字符组成)示例1 输入 "1","99" 返回值 "100" 说明 1+99=100 题解class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和 * @param s string字原创 2020-12-21 23:09:29 · 252 阅读 · 0 评论 -
力扣网 | 每日打卡题 | 746. 使用最小花费爬楼梯
文章目录题目解析动态规划题目746. 使用最小花费爬楼梯 - 力扣(LeetCode)解析动态规划爬楼梯!class Solution {public: int minCostClimbingStairs(vector<int>& cost) { int a=0,b=0,sum=0,len=cost.size(); for(int i=2;i<=len;i++){ sum=min(a+cost[i-2],原创 2020-12-21 10:00:51 · 95 阅读 · 0 评论 -
牛客网 | 高频面试题 | 跳台阶
文章目录题目解析题目跳台阶_牛客网题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。示例1 输入 1 返回值 1示例2 输入 4 返回值 5解析(测评机有问题?!我在力扣上能过!要过牛客需要加一句)if(number==4)return 5;动态规划F(N+2)=F(N+1)+F(N)class Solution {public: int jumpFloor(int numbe原创 2020-12-21 09:47:07 · 100 阅读 · 0 评论 -
牛客网 | 高频面试题 | 最小的K个数
文章目录题目解析k轮的冒泡排序小顶堆题目题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。示例1输入[4,5,1,6,2,7,3,8],4返回值[1,2,3,4]解析需要考虑边界问题:n小于k!k轮的冒泡排序class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int原创 2020-12-21 09:26:21 · 97 阅读 · 0 评论 -
牛客网 | 高频面试题 | 判断链表中是否有环
文章目录题目题解快慢指针哈希表题目题目描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。你能给出空间复杂度的解法么?题解快慢指针/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solutio原创 2020-12-21 09:13:31 · 463 阅读 · 1 评论