![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode
文章平均质量分 52
程勇uestc
电子科大
展开
-
求n个数组(字符串)的最长公共子串
给定n个数组,求这n个数组的最长公共子串的长度,例如:paths = [[0,1,2,3,4], [2,3,4], [4,0,1,2,3]]的最长公共子串为[2,3],长度为2。这类问题可以使用字符串hash来解决,首先是二分最长公共子串的长度。对于每个二分的长度,都去check是否存在该长度下的解。hash的主要目的是在O(1)时间得到每个数组的每个子串的hash值,这样就可以判断在相同长度下是否存在某个hash值在每个数组中都存在,即包含相同长度的子串。typedef unsigned lon原创 2021-07-04 21:47:25 · 1832 阅读 · 0 评论 -
shopee 2021秋招部分笔试题汇总
1、Leetcode13 罗马数字转整数class Solution {public: int romanToInt(string s) { int n = s.size(); unordered_map<string, int> mp; mp["I"] = 1, mp["V"] = 5, mp["X"] = 10, mp["L"] = 50, mp["C"] = 100, mp["D"] = 500, mp["M"]原创 2021-07-02 21:10:54 · 1745 阅读 · 1 评论 -
微软笔试题
题目三\quad给一个无向图,N个顶点,M条边,0为起点,N-1为终点,每条边初始权值为 1。图中除普通节点外有 4 种节点。第一种:走过这种节点后的两条边权值翻倍(Sand)第二种:走过这种节点后的两条边权值减半 (Nitro)第三种:走到这个节点就停止,不能再走了(Cop)第四种:走到这个节点,下一条边的权值+1(Crash)求节点 0 到 N-1 的最短权值和路径。输入样例:第一行为点数和边数;第二行为n个字符串表示这n个点的属性;接下来有m行,每行两个节点编号,表示这两个节点有一条原创 2021-01-30 17:20:13 · 874 阅读 · 0 评论 -
子集划分问题
一、将一个数组划分为两个子集数组里面数取值范围无限制:爆搜+优化数组里面数取值范围有限制:背包1、Leetcode416 分割等和子集\quad给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。每个数组中的元素不会超过 100;数组的大小不会超过 200。输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].int f[10010];class Solution {public:原创 2021-01-29 23:51:16 · 3608 阅读 · 0 评论 -
Leetcode第一周
解析:做这类括号题,我们需要知道一个括号序列是否合法的两个条件:括号序列中左括号和右括号数目相同括号序列的任意前缀中左括号数目大于等于右括号数目依据上述两条特性,我们就可以得到该题解法,即记录下当前生成的序列中左括号数目lc和右括号数目’rc’,如果lc==n && rc == n表明该序列已是合法序列;如果lc<n则可以加个左括号,如果rc<n且rc<lc则可以加右括号。程序如下:class Solution {public: vector<.原创 2020-06-16 21:06:43 · 1194 阅读 · 0 评论 -
最长上升子序列和
最长上升子序列长度题意:给定一个无序的整数数组,找到其中最长上升子序列的长度。输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。解法:这是一道经典的动态规划状态表示:dp[i]表示序列前i个数(必须包含nums[i])的最长上升子序列长度状态转移:dp[i] = max(dp[j] + 1), 0<...原创 2020-04-26 17:37:13 · 1678 阅读 · 0 评论 -
最长回文子串的几种求法
题目链接:最长回文子串一、暴力求解O(n3)O(n^3)O(n3)\quad直接枚举两端点i,ji,ji,j,再判断字符串s[i,,,j]s[i,,,j]s[i,,,j]是否是回文串,一共三重循环。class Solution {public: string longestPalindrome(string s) { int n = s.length(); ...原创 2020-01-29 20:24:07 · 1431 阅读 · 0 评论 -
Leetcode周赛168 c++
1、统计位数为偶数的数字\quad统计每个数的位数再判断下是否为偶数位即可。class Solution {public: int findNumbers(vector<int>& nums) { int res = 0; for(int i = 0; i < nums.size(); i++) { ...原创 2019-12-22 13:14:01 · 1330 阅读 · 2 评论 -
Leetcode883 三维形体投影面积 高效解法
左边的投影面积为每一行最大值之和,前面的投影面积为每一列最大值之和,底部投影为所有不为0元素的个数。因此可在一次遍历中将这些数据都统计出来。class Solution {public: int projectionArea(vector<vector<int>>& grid) { int r = 0, l = 0, d = 0; ...原创 2019-11-30 17:10:40 · 1138 阅读 · 0 评论 -
Leetcode 43 字符串相乘
模拟大数乘法即可,先用res数组存放相乘后的数字结果,再统一处理进位并转化为字符串。需注意当某一方为0时可直接输出"0"退出。这种暴力解法都可以拿到获得前98%。更高效的做法是用FFT,时间复杂度接近于O(nlogn),n为字符串长度。FFT板子见链接class Solution {public: string multiply(string num1, string num2) {...原创 2019-11-30 10:49:58 · 1251 阅读 · 0 评论 -
Leetcode 20. 有效的括号 0ms通过
其实只需要做一个如下判断:若剩下的串数量少于当前栈内元素数量,则不可能匹配成功,提前退出即可。class Solution {public: bool isValid(string s) { if (s.length()==0) return true; stack<char> st; st.push(s[0]); unor...原创 2019-11-30 10:45:01 · 1287 阅读 · 0 评论