- 博客(495)
- 资源 (1)
- 收藏
- 关注
原创 1463. Cherry Pickup II
纠结在相交的情况下该怎么处理。该问题就是计算,假设A\B两人停在row-1行的各个位置,他们到达当前位置,路上和的最大值。dp[i][j1][j2] 定义为A停在[i][j1] B在[i][j2],他们到达当前位置,路上和的最大值。那么dp[i][j1][j2] = max(dp[i][j1-1:j1+1][j2-1:j2+1] )+grid[i][j1]+grid[i][j2]*(j1!=j2)然后利用这个dp,就可以天然的解决这问题。class Solution {public:
2020-06-02 11:52:38
517
原创 1467. Probability of a Two Boxes Having The Same Number of Distinct Balls
这是一道概率题,假设输入balls表示所有的球数目。要讲球等分成两部分,a and b。要求sum(a)==sum(b) and sumtype(a)==sumtype(b),总共有多少种分割方式。首先,总共的分割方式为perms(balls),比如balls = [1,2,3],1号颜色球有1个,2号颜色有2个,3号颜色有三个球。那么总共的扰动方式为6个位置中选1个,剩下5个位置中选2个,剩下3个位置放3个,总共是factor(sum(balls))/factor(ball[0])*factor(bal
2020-06-01 10:46:23
507
原创 网络相关知识总结
因为不是很懂这一块东西,也没有接触过,所以总结一下。常用的主要围绕ipv4地址(IPv4 地址后面由3个小数点分割开的数字就是本机的IP地址。),子网掩码(反应这个局域网内最多有几台机器,默认为255.255.255.0),默认网关三部分。首先是查看方式windows: cmd 中输入ipconfiglinux: ifconfig 返回式例为[root@glnode04 vm01-Cent...
2020-05-01 16:47:09
442
原创 1140. Stone Game II
我觉得这种题目贼难写。。。。首先还是一样,dp[i][M]定义为从【i,end-1】区间内,可以取到X属于[1, 2M]个点,使得当前人超过另一个人最多。当取X个点时,结果为A[i]+A[i+1]+…A[i+x-1]-dp[i+x][max(M,x)].也就是当前取到的是当前人超过的个数;dp[i+x][max(M,x)]就是另一个人超过当前人最多,就得动了这个解。也就是需要明确,什么时候结...
2020-04-12 14:29:25
259
原创 1405. Longest Happy String
每次写贪心的算法,都是一阵恶心。这个启发式的贪心规则该怎么设计,头疼。。。这个贪心规则是这样的,首先要选数量多的先放。除非后面两个都是这个,才会考虑放其他的。每次就放一个,而不是一下放多个。class Solution {public: // 还是很讨厌贪心算法,真是无从下手啊 // 数量多的一定是能放先放。除非量已经饱和,才会别的大的放其他。 string long...
2020-04-05 12:53:23
444
原创 127. Word Ladder
找无论有圈无圈的最短路,都要用广搜。深搜会超时的。class Solution {public: int ladderLength(string beginWord, string endWord, vector<string>& wordList) { unordered_set<string> dict(wordList.begin...
2020-03-29 20:51:54
170
原创 1277. Count Square Submatrices with All Ones
计算每个点作为起始点时,能够得到几个矩阵。class Solution {public: int func(vector<vector<int>>& matrix, int x, int y){ int row = matrix.size(); int col = matrix[0].size(); ...
2020-03-28 22:15:26
253
原创 1284. Minimum Number of Flips to Convert Binary Matrix to Zero Matrix
看了答案,加上每个点只能走一次这个前提,就可以进行dfs暴力搜索了。【因为一个点走两次==这个点没走,无论中间隔了多少个点都成立】class Solution {public: // 如何将一个mats经过若干步骤后翻转成全0的矩阵?? // 每次翻转,将改变四周以及当前位置 void flip(vector<vector<int>>&...
2020-03-28 20:25:20
288
原创 1248. Count Number of Nice Subarrays
想到了解法还是挺简答的,就是充分利用奇数存在的位置信息,来获取所有可能结果。class Solution {public: // 保存奇数的位置然后处理 int numberOfSubarrays(vector<int>& nums, int k) { vector<int> poss(1, -1); for(in...
2020-03-28 18:24:42
210
原创 1334. Find the City With the Smallest Number of Neighbors at a Threshold Distance
求解到所有路径的最短路=》弗洛伊德最短路方法class Solution {public: // Flody -> 找到任意两点之间的最短路径 int findTheCity(int n, vector<vector<int>>& edges, int distanceThreshold) { vector<...
2020-03-28 17:14:41
241
原创 1300. Sum of Mutated Array Closest to Target
虽然是暴力求解,但是要尽量把value的搜索范围压倒最小。现象1:value越大,整体sum一定越大现象2:target/arr.size()一定是value能取到的最小值,并且sum<target现象3: 随着value的增大,sum也是越来越大,但是当sum超越targte时候,就是应该结束判断的时候了。class Solution {public: // i...
2020-03-28 14:19:47
193
原创 1278. Palindrome Partitioning III
这种在计算para时候,还可以优化,进一步压缩时间。class Solution {public: // 将s分成k个非空不相交子串,每个是para // 对s至少替换多少次?返回最小次数。 int func(string s){ int ii=0; int jj=s.size()-1; int res = 0;...
2020-03-28 13:46:01
187
原创 1345. Jump Game IV
定义dp[i]为从i->end,最短路径长度。直接用dfs,由于有圈的存在,所以,每个点作为中间点的dp[i]和最为开始点的dp[]是不同的。所有都要逐一遍历,很慢。看了答案,才知道BFS才是最快的,首先,成环的部分,深度是无限大的。我们只用返回深度最小的就可以了。如果这个点已经走过了,那么后面就不用再走了,因为它一定是最短的。因此,对于有环走点问题,采用BFS是最优的。同时,它还需...
2020-03-27 22:48:55
332
原创 1312. Minimum Insertion Steps to Make a String Palindrome
这种字符串问题,本身就是一个编辑距离问题的简化版。class Solution {public: int minInsertions(string s) { int row = s.size(); int col = s.size(); vector<int> temp(col, 0); vector<v...
2020-03-27 19:32:49
345
原创 1318. Minimum Flips to Make a OR b Equal to c
通过cc推预测值class Solution {public: // 通过结果 vector<int> func(int num){ vector<int> res(32, 0); int pos = res.size()-1; while(num!=0){ res[pos--] =...
2020-03-27 18:56:53
206
原创 1335. Minimum Difficulty of a Job Schedule
递归太费时了,每次都是逐一处理。class Solution {public: // 定义为从i开始[i,jobDifficulty.size()-1], 还有d个分割方式,其和的最小值。 int dfs(int i, int d, vector<int>& jobDifficulty){ //ending early, not exccee...
2020-03-27 18:39:48
236
原创 1296. Divide Array in Sets of K Consecutive Numbers
应该是微软的一道编程题,用map就可以解决,但是要消息不要减去已有的数字。class Solution {public: // 每个set有k个数字并且是连续的, bool isPossibleDivide(vector<int>& nums, int k) { if(nums.size()%k!=0){ return...
2020-03-27 09:16:51
222
原创 1306. Jump Game III
dfs搜索问题class Solution {public: bool dfs(int pos, vector<int>& arr, vector<int>& visit){ if(arr[pos]==0){ return true; } // at pos, ca...
2020-03-27 08:37:38
189
原创 45. Jump Game II
用贪心算法,竟然对了,反正每次都走最远的位置就好了。class Solution {public: // 最直观的想法,就是统计所有到last的路径中,寻找路径最短的。 // 也就是统计所有结点到last的最短路径。 int dfs(vector<int>& nums, int pos){ if (nums[pos]+pos...
2020-03-27 08:36:49
167
原创 1340. Jump Game V
真不愧是hard的题目,其本质是就是给一个图,然后计算每个点的最深dp,但是不能重复计算,只能计算一次。所以设置了一个res,统计所有的结果。class Solution {public: // 跳跃1-d步骤,往左往右都可以,主要不超范围 // 并且中间不能有路障。 // 返回最多能走几个点呢?? // 这本质上就是一个图的dfs问题,还是能做的。 ...
2020-03-26 22:37:29
212
原创 1339. Maximum Product of Splitted Binary Tree
不算难,什么时候乘积最大呢?由于a+b=固定的,ab最大只有在|a-b|最小时候才会发生。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val...
2020-03-26 21:18:13
142
原创 1331. Rank Transform of an Array
class Solution {public: // 实现argmax函数 vector<int> arrayRankTransform(vector<int>& arr) { map<int, int> cnt; for(int i=0;i<arr.size();i++){ ...
2020-03-26 20:52:51
206
原创 1354. Construct Target Array With Multiple Sums
一开始想用递归的方法求解,但是搜索空间太大,超时。class Solution {public: // target 长度有限,但是内部元素比较大。 // target与顺序无关,只要有这些数字就可以了 // 如果当前和超越了target最大数据,那么就是不可能的 // 不需要逐次出现target里面的数字,可以不断迭代寻找。 // 感觉充斥着递归的思想...
2020-03-26 19:58:29
201
原创 1343. Number of Sub-arrays of Size K and Average Greater than or Equal to Threshold
计算前k个和class Solution {public: // 计算所有长度为k的子串和,计算和》=threshold*k的子串个数。 int numOfSubarrays(vector<int>& arr, int k, int threshold) { if (k>arr.size()){return 0;} //...
2020-03-25 21:44:22
187
原创 1344. Angle Between Hands of a Clock
每次统计和0度之间的角度,计算差class Solution {public: double angleClock(int hour, int minutes) { double minuteangle = double(minutes)*6.0; double time = double(hour) + double(minutes)/60.0; ...
2020-03-25 21:35:03
172
原创 1392. Longest Happy Prefix (KMP算法)
这就是kmp计算步骤中的第一步骤——计算最长前后串,记录一下思路,网上的教程很多,还是挺复杂的。这是我的思路整理。首先,本质上是一个dp问题。假设dp[i]表示字符串中,[0,i]区间内的最长前后串。主要分解成如下步骤,如果dp[i-1]=K,那么说明,[0,i-1]中,前K个和后K个一定是相同的。如果在上图中j位置s[j]==s[i],那么dp[i+1]就可以变成K+1如果不相同,假...
2020-03-24 19:53:49
244
原创 1388. Pizza With 3n Slices
这道题需要考虑清楚,该问题可以转化为给一个长度为3K的数组,从中选择不相邻(包括首尾不相连)的K个点,从而使得和最大。(只要满足上述条件即可)然后,首尾不可能同时取到,因此把他的环拆开,分成两种情况分析。这个问题用递归求解会超时(重复计算了),必须用dp开辟空间求解。class Solution {public: int func(vector<int>& sl...
2020-03-23 21:44:58
207
原创 1391. Check if There is a Valid Path in a Grid
就是很基础的dfs的问题。只要确定好在什么位置,哪些点能走就可以,然后逐级递推,得到最后判断结果。class Solution {public:// dfs problems bool dfs(vector<vector<int>>& grid, vector<vector<int>>& visits, int ...
2020-03-22 13:58:51
339
原创 1386. Cinema Seat Allocation
class Solution {public: int func(map<int, int>& blocks){ if (blocks.size()==0){ return 2; } // start 2,4,6 int count = 0; ...
2020-03-22 00:50:26
465
原创 697. Degree of an Array
class Solution {public: int findShortestSubArray(vector<int>& nums) { int maxlen = -1; map<int, vector<int>> cnt; for(int i=0;i<nums.size();i++){...
2020-03-20 12:51:53
128
原创 733. Flood Fill
洪水问题,需要注意当target和目标值一样时,应该怎么处理。class Solution {public: void func(vector<vector<int>>& image, int sr, int sc, int newColor, int oldColor) { int row = image.size(); ...
2020-03-18 19:57:46
136
原创 997. Find the Town Judge
找一个点A,所有其他点都与点A直接相连。思路就是计算所有点的直接连接点,然后寻找目标在不在这里面。class Solution {public: bool judgefind(vector<int>& vec, int num){ vector<int>::iterator it = find(vec.be...
2020-03-18 19:22:05
144
原创 1237. Find Positive Integer Solution for a Given Equation
/* * // This is the custom function interface. * // You should not implement it, or speculate about its implementation * class CustomFunction { * public: * // Returns f(x, y) for any given po...
2020-03-15 21:33:53
181
原创 1337. The K Weakest Rows in a Matrix
class Solution {public: vector<int> kWeakestRows(vector<vector<int>>& mat, int k) { vector<int> cnt; for(int i=0;i<mat.size();i++){ int ...
2020-03-15 20:48:36
231
原创 811. Subdomain Visit Count
class Solution {public: vector<string> split(string s){ string temp=""; vector<string> res; for(int i=0;i<s.size();i++){ if (s[i]==' ' || s...
2020-03-15 17:29:05
214
原创 821. Shortest Distance to a Character
class Solution {public: vector<int> shortestToChar(string S, char C) { vector<int> res(S.size(), 0); vector<int> Cpos; // [3,5,6,10] for(int i=0;i<S.s...
2020-03-15 15:59:13
142
原创 1200. Minimum Absolute Difference
class Solution {public: vector<vector<int>> minimumAbsDifference(vector<int>& arr) { // find 最小绝对差距 map<int, int> nums; sort(arr.begin(), arr.e...
2020-03-15 15:44:32
189
原创 876. Middle of the Linked List
走两次/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode...
2020-03-15 15:36:25
140
原创 559. Maximum Depth of N-ary Tree
/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vector<Node*> ...
2020-03-15 15:28:47
154
原创 922. Sort Array By Parity II
很简单class Solution {public: vector<int> sortArrayByParityII(vector<int>& A) { vector<int> Aeven; vector<int> Aodd; for(int i=0;i<A.size();i+...
2020-03-15 15:22:15
149
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人