- 博客(226)
- 收藏
- 关注
原创 2020牛客暑期多校训练营(第三场)
A.Clam and Fish记录答案为ans,很明显当为3、4的时候,捕鱼即可,ans++,当为0的时候,判断是否有做好的鱼饵,有鱼饵的话直接钓鱼,ans++,此时鱼饵数也对应减一,为1时,有蛤,故做一个鱼饵,鱼饵数+1。#include <stdio.h>#include <string.h>#include <iostream>#in...
2020-07-19 21:47:00 52
原创 2020牛客暑期多校训练营(第二场)
B.Boundary题意就是给你n个点,要求原点在圆的边界上,问在圆上的点的最多的圆,输出边界上有题中所给点的最大个数。我一开始读错题意了。以为是以原点为圆心。。然后直接遍历每个点和其他点的距离就是半径个数取最大,样例也过了。。但是后来发现原点是在边界上的。。这道题其实就可以利用三点构成一个圆,我们将每两个点组合然后再包括原点,求出圆心,求出所有的圆心用map存入,那么他的最大的si...
2020-07-16 11:36:00 53
原创 2020牛客暑期多校训练营(第一场)
F Infinite String Comparision签到题,就是给你两个字符串,每个字符串可以以他本身为循环节循环无限次,让你以字典序规则判断两个字符串的大小。做法有不少,我就直接将字符串变为自己两倍,然后一次遍历判断每个位置对应的字符大小。#include <stdio.h>#include <string.h>#include <iost...
2020-07-12 23:42:00 54
原创 1010. 总持续时间可被 60 整除的歌曲
[1010. 总持续时间可被 60 整除的歌曲](1010. 总持续时间可被 60 整除的歌曲)有这样一个性质:\[(a+b)\%c=0-->(a\%c+b\%c)\%c=0\]我们可以用map将每个数对应的取模结果还有个数存起来,这样i从[1,30) , \(map[i]*map[60-i]\) 就是一部分的解了,这样就不用考虑顺序了,每种情况这样相乘就行了,还有当i=...
2020-07-11 16:20:00 37
原创 1329. 将矩阵按对角线排序(暴力)
1329. 将矩阵按对角线排序暴力即可,因为满足i-j的值都是相等的是复合题意的,所以我们每次将i-j相同的存入数组,然后sort排序,将原来对角线数组更新为拍完数之后的数组class Solution {public: vector<vector<int>> diagonalSort(vector<vector<int>>&a...
2020-07-11 11:37:00 35
原创 229. 求众数 II(摩尔投票法On)
229. 求众数 II摩尔投票法,因为数组里>n/3的数最多有两个,所以声明两个变量n1,n2和两个计数器c1,c2,一开始都初始化为0,当遍历数组的时候:当前元素=n1时,c1++;当前元素=n2时,c2++;当c1=0时,n1=当前元素,同时c1=1;当c2=0时,n2=当前元素,同时c2=1;其余情况下,c1--,c2--;最后的n1,n2可能就是结果,还要遍历原数...
2020-07-06 13:18:00 32
原创 169. 多数元素(摩尔投票算法O(n))
169. 多数元素摩尔投票法,先设置一个暂时的答案即x=nums[0],然后用一个计数器ii=0;当遍历数组元素的时候,当ii不为0的时候,判断x和nums[i]的大小,nums[i]和x相等的话,ii++,否则ii--;当ii减小到0的时候这时候就应该更新x的值了,同时ii++;这样一次遍历最后的x就是答案了。class Solution {public: int majo...
2020-07-05 21:10:00 30
原创 1266. 访问所有点的最小时间
1266. 访问所有点的最小时间自己画出几个例子就能发现规律,当 \(abs(x1-x2)=abs(y1-y2)\) 的长度相等时,那么最小的距离就是 \(abs(x1-x2)\),否则就是两边那个较大的。class Solution {public: int minTimeToVisitAllPoints(vector<vector<int>>...
2020-07-03 22:51:00 29
原创 面试题 17.19. 消失的两个数字(On)
面试题 17.19. 消失的两个数字这道理难点在于O(n)时间复杂度,O1的空间复杂度,我们可以在nums数组的对应位置的元素上加上30000,当更新元素时该位置的nums元素值大于了30000,那么说明前面有个元素的值为现在的元素位置的下标,我们只要 $$ nums[nums[i]-30000]+=30000 $$ 即可。比如:一开始$$ nums[4]=6,nums[6]=8,nums...
2020-07-02 18:36:00 31
原创 167. 两数之和 II - 输入有序数组
167. 两数之和 II - 输入有序数组第一种方法是利用map存入每个数,然后遍历原数组,判断target-numbers[i]存不存在map数组里,若存在返回两个数的下标即可,利用lower_bound会出错,因为当你本身是2的时候,目标是4,那么返回的是同一个位置的值,所以应当用upper_bound,因为肯定存在结果,所以返回这个下标就行。class Solution {pu...
2020-06-29 20:29:00 25
原创 面试题 17.05. 字母与数字
面试题 17.05. 字母与数字令字母为1,数字为-1,先求前缀和,如果前缀和数组该位置为0,那么说明区间[0,i]之间和为零,我们需要最长的连续的子区间的和为0,那么我们先定义结果的这个区间的头为x,尾巴为y,当遍历前后缀和数组时,位置为0的地方,更新x,y的值为0,i,当遇到其他前缀和时,当map<int,int>mp里有没有这个,若没有,则存入map,用来记录除了前缀和...
2020-06-29 20:06:00 27
原创 373. 查找和最小的K对数字
373. 查找和最小的K对数字这题直接定义一个结构体,内部自定义排序规则,属性为两个int数,分别代表第一个和第二个数组的元素,还有一个和的属性,用来写排序规则,排完序后,将$ kk=min(k,nums1.size()*nums2.size()) $个元素存入vector<vector>v(kk)中,返回v即可。class Solution {public: ...
2020-06-27 13:09:00 32
原创 786. 第 K 个最小的素数分数(二分)
786. 第 K 个最小的素数分数我们可以二分,L=0,R=1,那么取mid就是0.5,逐个逼近。令结果分数初始化为0/1,m=0,n=1,取完mid再在数组里找小于等于mid的分数个数,同时更新m和n的值,只要Ai/aj的值大于m/n的就更新,直到找到取完mid再在数组里找小于等于mid的分数个数为k,这个时候返回{m,n}即可,否则>k的话,在左边找,否则在右边找。class S...
2020-06-26 23:00:00 35
原创 378. 有序矩阵中第K小的元素(排序或者二分)
378. 有序矩阵中第K小的元素第一种方法:将二维矩阵中的数存起来,然后排序输出第k个,耗时较多class Solution {public: int kthSmallest(vector<vector<int>>& matrix, int k) { vector<int>v; for(int i...
2020-06-26 21:06:00 42
原创 668. 乘法表中第k小的数(二分)
668. 乘法表中第k小的数同样,二话不说写个暴力,用两个一维数组来存储行和列,用一个vector来存储乘法表中的每个数,sort排个序输出k位置的数即可,意料之中,超时,且还是最后一组数据超时!!害### 然后用了二分来写,最小的是1,最大的数是m*n,那么取个mid,在乘法表里记录每行有多少个数小于等于mid的,经发现可得每行小于等于mid的数为 \(min(mid / i, n)\...
2020-06-26 19:56:00 29
原创 1299. 将每个元素替换为右侧最大元素
1299. 将每个元素替换为右侧最大元素直接从后往前更新最大值存入数组中,然后逆置数组,删去最前的,在随扈补一个-1即可。class Solution {public: vector<int> replaceElements(vector<int>& arr) { vector<int>v; ...
2020-06-26 16:52:00 27
原创 719. 找出第 k 小的距离对(二分)
719. 找出第 k 小的距离对思路:首先采用了暴力求差值,11组数据超时,优化后利用map来求,结果在最后的两组超时。。然而还是要用二分写,二分差值,最小的为0,最大的是排完序后最后一个数的值减去第一个数的值,取mid,然后在原来数组里继续二分找有多少对差值cnt是小于等于mid的。若对数cnt大于了k,则说明,mid左边的差值(即差值<=mid的)个数>k,够了,则在m...
2020-06-26 13:39:00 33
原创 35. 搜索插入位置(二分)
35. 搜索插入位置二分查找位置即可class Solution {public: int searchInsert(vector<int>& nums, int target) { int left=0,right=nums.size(); while(left<right) { ...
2020-06-25 17:28:00 35
原创 文件打不开,移到废纸篓
第一种办法sudo spctl --master-disable(安全与隐私中允许任何来源的应用安装)若是第一种还打不开,sudo xattr -r -d com.apple.quarantine空格加上finder中打不开的应用路径(直接拖进终端)...
2020-06-24 17:33:00 31
原创 119. 杨辉三角 II
119. 杨辉三角 IIclass Solution {public: vector<int> getRow(int rowIndex) { vector<vector<int>> dp(rowIndex+10); if(rowIndex==0) { dp[0].push...
2020-06-22 12:35:00 25
原创 118. 杨辉三角(动态规划,二维数组)
118. 杨辉三角二维数组class Solution {public: vector<vector<int>> generate(int numRows) { vector<vector<int>>a; if(numRows==0) { return a;...
2020-06-22 12:19:00 22
原创 48. 旋转图像(顺时针)
48. 旋转图像class Solution {public: void rotate(vector<vector<int>>& matrix) { for(int i=0;i<matrix.size()/2;i++)//将行看做一个整体,逆序存放 { swap(matrix[i],mat...
2020-06-21 22:14:00 22
原创 560. 和为K的子数组
560. 和为K的子数组暴力O(n^2)利用前缀和做差有多少组差为kclass Solution {public: int subarraySum(vector<int>& nums, int k) { int sum[nums.size()+10]; int ops=0; sum[o...
2020-06-21 16:36:00 19
原创 75. 颜色分类(三指针移动||计数排序)
75. 颜色分类根据题意提示,用计数排序扫描每个颜色的个数,然后重新往数组里填充012的个数即可,一趟扫描class Solution {public: void sortColors(vector<int>& nums) { map<int,int>mp; for(int i=0;i<nums.s...
2020-06-21 13:33:00 22
原创 670. 最大交换
670. 最大交换贪心O(n):class Solution {public: int maximumSwap(int num) { string s=to_string(num); map<char,int>mp; for(int i=0;i<s.length();i++) mp[s[i...
2020-06-19 17:20:00 17
原创 209. 长度最小的子数组
209. 长度最小的子数组O(n^2)class Solution {public: int minSubArrayLen(int s, vector<int>& nums) { int maxn=nums.size()+10; if(nums.size()==0) return 0; ...
2020-06-19 13:32:00 22
原创 面试题 05.08. 绘制直线(位运算)
面试题 05.08. 绘制直线我也是看了别人的题解来了解题意的,,,这题一开始真没看懂,后来懂了题意就很好算了,通过右移来将左边多余的1置零,左移来将右边多余的1置零,还要特判一下如果需要进行操作的int位置在同一个int32位上,需要右移(左边的0+右边的0)从而把多余的1置为0,自己手动在草稿纸上移动即可。。class Solution {public: vector<...
2020-06-18 17:05:00 35
原创 1160. 拼写单词
1160. 拼写单词map映射字符个数比较:class Solution {public: int countCharacters(vector<string>& words, string chars) { map<char,int>mp; for(int i=0;i<chars.length();i++...
2020-06-17 20:55:00 18
原创 88. 合并两个有序数组
88. 合并两个有序数组合并再sort:class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int ops=m; nums1.erase(nums1.begin()+m,nums...
2020-06-17 20:16:00 18
原创 80. 删除排序数组中的重复项 II(On)
80. 删除排序数组中的重复项 IIclass Solution {public: int removeDuplicates(vector<int>& nums) { if(nums.size()==0) return 0; if(nums.size()==1) return 1;...
2020-06-17 19:14:00 17
原创 26. 删除排序数组中的重复项
26. 删除排序数组中的重复项更改位置下标即可class Solution {public: int removeDuplicates(vector<int>& nums) { if(nums.size()==0) return 0; if(nums.size()==1) re...
2020-06-15 16:13:00 20
原创 面试题 16.20. T9键盘(map映射)
面试题 16.20. T9键盘class Solution {public: vector<string> getValidT9Words(string num, vector<string>& words) { map<char,int>mp; mp['a']=2;mp['b']=2;mp['c']=2;...
2020-06-15 15:55:00 25
原创 162. 寻找峰值(二分 logn)
162. 寻找峰值第一种想到O(n)解法,直接for循环遍历求出最大值的下标输出即可:class Solution {public: int findPeakElement(vector<int>& nums) { if(nums.size()<=1) return 0; int a=nums[...
2020-06-15 15:21:00 29
原创 674. 最长连续递增序列(一维dp)
674. 最长连续递增序列class Solution {public: int findLengthOfLCIS(vector<int>& nums) { int dp[nums.size()+10];//dp[i]表示到第i个元素为止它的最长连续递增序列的长度 dp[0]=1;//第一个数的连续递增个数 fo...
2020-06-15 14:43:00 22
原创 41. 缺失的第一个正数(On)
41. 缺失的第一个正数思路:利用去重排序,从1找出对应关系,不同即退出循环class Solution {public: int firstMissingPositive(vector<int>& nums) { if(nums.size()==0) return 1; if(nums.size()...
2020-06-15 13:15:00 25
原创 695. 岛屿的最大面积(dfs)
695. 岛屿的最大面积class Solution {public: int maxAreaOfIsland(vector<vector<int>>& grid) { int hh=grid.size();//行 int ll=grid[0].size();//列 if(hh==0) ...
2020-06-14 22:57:00 24
原创 901. 股票价格跨度(递减栈)
901. 股票价格跨度class StockSpanner {public: StockSpanner() { } int next(int price) { int d=1; while(!value.empty()&&price>=value.top())//价格栈不为空且当前的价格大于等于价格栈的顶元素...
2020-06-13 22:07:00 20
原创 面试题63. 股票的最大利润
面试题63. 股票的最大利润class Solution {public: int maxProfit(vector<int>& prices) { if(prices.size()<=1) return 0; int ans=prices[0]; int ans1=0; ...
2020-06-13 22:05:00 27
原创 309. 最佳买卖股票时机含冷冻期(二维dp)
309. 最佳买卖股票时机含冷冻期解释见代码:class Solution {public: int maxProfit(vector<int>& prices) { if(prices.size()<=1) return 0; int dp[prices.size()+10][3];//第一维...
2020-06-09 13:52:00 20
原创 Codeforces Round #647 (Div. 2) - Thanks, Algo Muse!
题目链接:http://codeforces.com/contest/1362简单讲解:https://www.bilibili.com/video/BV15C4y1a7e5A - Johnny and Ancient Computer//// main.cpp// CF//// Created by HanJinyu on 2020/5/15.// Copyrigh...
2020-06-05 12:37:00 23
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人