06 2020 档案

摘要:167. 两数之和 II - 输入有序数组 第一种方法是利用map存入每个数,然后遍历原数组,判断target-numbers[i]存不存在map数组里,若存在返回两个数的下标即可,利用lower_bound会出错,因为当你本身是2的时候,目标是4,那么返回的是同一个位置的值,所以应当用upper_ 阅读全文
posted @ 2020-06-29 20:29 branna 阅读(151) 评论(0) 推荐(0)
摘要:面试题 17.05. 字母与数字 令字母为1,数字为-1,先求前缀和,如果前缀和数组该位置为0,那么说明区间[0,i]之间和为零,我们需要最长的连续的子区间的和为0,那么我们先定义结果的这个区间的头为x,尾巴为y,当遍历前后缀和数组时,位置为0的地方,更新x,y的值为0,i,当遇到其他前缀和时,当m 阅读全文
posted @ 2020-06-29 20:06 branna 阅读(164) 评论(0) 推荐(0)
摘要:373. 查找和最小的K对数字 这题直接定义一个结构体,内部自定义排序规则,属性为两个int数,分别代表第一个和第二个数组的元素,还有一个和的属性,用来写排序规则,排完序后,将$ kk=min(k,nums1.size()*nums2.size()) $个元素存入vector<vector>v(kk 阅读全文
posted @ 2020-06-27 13:09 branna 阅读(217) 评论(0) 推荐(0)
摘要: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的分数个 阅读全文
posted @ 2020-06-26 23:00 branna 阅读(294) 评论(0) 推荐(0)
摘要:378. 有序矩阵中第K小的元素 第一种方法:将二维矩阵中的数存起来,然后排序输出第k个,耗时较多 class Solution { public: int kthSmallest(vector<vector<int>>& matrix, int k) { vector<int>v; for(int 阅读全文
posted @ 2020-06-26 21:06 branna 阅读(241) 评论(0) 推荐(0)
摘要:668. 乘法表中第k小的数 同样,二话不说写个暴力,用两个一维数组来存储行和列,用一个vector来存储乘法表中的每个数,sort排个序输出k位置的数即可, 意料之中,超时,且还是最后一组数据超时!!害### 然后用了二分来写,最小的是1,最大的数是m*n,那么取个mid, 在乘法表里记录每行有多 阅读全文
posted @ 2020-06-26 19:56 branna 阅读(298) 评论(0) 推荐(0)
摘要:1299. 将每个元素替换为右侧最大元素 直接从后往前更新最大值存入数组中,然后逆置数组,删去最前的,在随扈补一个-1即可。 class Solution { public: vector<int> replaceElements(vector<int>& arr) { vector<int>v; 阅读全文
posted @ 2020-06-26 16:52 branna 阅读(124) 评论(0) 推荐(0)
摘要:719. 找出第 k 小的距离对 思路: 首先采用了暴力求差值,11组数据超时,优化后利用map来求,结果在最后的两组超时。。然而还是要用二分写,二分差值,最小的为0,最大的是排完序后最后一个数的值减去第一个数的值,取mid,然后在原来数组里继续二分找有多少对差值cnt是小于等于mid的。 若对数c 阅读全文
posted @ 2020-06-26 13:39 branna 阅读(147) 评论(0) 推荐(0)
摘要:35. 搜索插入位置 二分查找位置即可 class Solution { public: int searchInsert(vector<int>& nums, int target) { int left=0,right=nums.size(); while(left<right) { int m 阅读全文
posted @ 2020-06-25 17:28 branna 阅读(91) 评论(0) 推荐(0)
摘要:第一种办法sudo spctl --master-disable(安全与隐私中允许任何来源的应用安装) 若是第一种还打不开,sudo xattr -r -d com.apple.quarantine空格加上finder中打不开的应用路径(直接拖进终端) 阅读全文
posted @ 2020-06-24 17:33 branna 阅读(263) 评论(0) 推荐(0)
摘要:119. 杨辉三角 II class Solution { public: vector<int> getRow(int rowIndex) { vector<vector<int>> dp(rowIndex+10); if(rowIndex==0) { dp[0].push_back(1); re 阅读全文
posted @ 2020-06-22 12:35 branna 阅读(123) 评论(0) 推荐(0)
摘要:118. 杨辉三角 二维数组 class Solution { public: vector<vector<int>> generate(int numRows) { vector<vector<int>>a; if(numRows==0) { return a; } if(numRows==1) 阅读全文
posted @ 2020-06-22 12:19 branna 阅读(275) 评论(0) 推荐(0)
摘要:48. 旋转图像 class Solution { public: void rotate(vector<vector<int>>& matrix) { for(int i=0;i<matrix.size()/2;i++)//将行看做一个整体,逆序存放 { swap(matrix[i],matrix 阅读全文
posted @ 2020-06-21 22:14 branna 阅读(163) 评论(0) 推荐(0)
摘要:560. 和为K的子数组 暴力O(n^2) 利用前缀和做差有多少组差为k class Solution { public: int subarraySum(vector<int>& nums, int k) { int sum[nums.size()+10]; int ops=0; sum[ops] 阅读全文
posted @ 2020-06-21 16:36 branna 阅读(146) 评论(0) 推荐(0)
摘要:75. 颜色分类 根据题意提示,用计数排序扫描每个颜色的个数,然后重新往数组里填充012的个数即可,一趟扫描 class Solution { public: void sortColors(vector<int>& nums) { map<int,int>mp; for(int i=0;i<num 阅读全文
posted @ 2020-06-21 13:33 branna 阅读(207) 评论(0) 推荐(0)
摘要: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]] 阅读全文
posted @ 2020-06-19 17:20 branna 阅读(182) 评论(0) 推荐(0)
摘要: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; if( 阅读全文
posted @ 2020-06-19 13:32 branna 阅读(112) 评论(0) 推荐(0)
摘要:面试题 05.08. 绘制直线 我也是看了别人的题解来了解题意的,,,这题一开始真没看懂,后来懂了题意就很好算了,通过右移来将左边多余的1置零,左移来将右边多余的1置零,还要特判一下如果需要进行操作的int位置在同一个int32位上,需要右移(左边的0+右边的0)从而把多余的1置为0,自己手动在草稿 阅读全文
posted @ 2020-06-18 17:05 branna 阅读(187) 评论(0) 推荐(0)
摘要:1160. 拼写单词 map映射字符个数比较: class Solution { public: int countCharacters(vector<string>& words, string chars) { map<char,int>mp; for(int i=0;i<chars.lengt 阅读全文
posted @ 2020-06-17 20:55 branna 阅读(119) 评论(0) 推荐(0)
摘要:88. 合并两个有序数组 合并再sort: class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int ops=m; nums1.erase(nums1.begin() 阅读全文
posted @ 2020-06-17 20:16 branna 阅读(123) 评论(0) 推荐(0)
摘要:80. 删除排序数组中的重复项 II class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.size()==0) return 0; if(nums.size()==1) return 1; int an 阅读全文
posted @ 2020-06-17 19:14 branna 阅读(226) 评论(0) 推荐(0)
摘要:26. 删除排序数组中的重复项 更改位置下标即可 class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.size()==0) return 0; if(nums.size()==1) return 1; 阅读全文
posted @ 2020-06-15 16:13 branna 阅读(137) 评论(0) 推荐(0)
摘要:面试题 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[' 阅读全文
posted @ 2020-06-15 15:55 branna 阅读(206) 评论(0) 推荐(0)
摘要:162. 寻找峰值 第一种想到O(n)解法,直接for循环遍历求出最大值的下标输出即可: class Solution { public: int findPeakElement(vector<int>& nums) { if(nums.size()<=1) return 0; int a=nums 阅读全文
posted @ 2020-06-15 15:21 branna 阅读(276) 评论(0) 推荐(0)
摘要:674. 最长连续递增序列 class Solution { public: int findLengthOfLCIS(vector<int>& nums) { int dp[nums.size()+10];//dp[i]表示到第i个元素为止它的最长连续递增序列的长度 dp[0]=1;//第一个数的 阅读全文
posted @ 2020-06-15 14:43 branna 阅读(167) 评论(0) 推荐(0)
摘要:41. 缺失的第一个正数 思路:利用去重排序,从1找出对应关系,不同即退出循环 class Solution { public: int firstMissingPositive(vector<int>& nums) { if(nums.size()==0) return 1; if(nums.si 阅读全文
posted @ 2020-06-15 13:15 branna 阅读(152) 评论(0) 推荐(0)
摘要:695. 岛屿的最大面积 class Solution { public: int maxAreaOfIsland(vector<vector<int>>& grid) { int hh=grid.size();//行 int ll=grid[0].size();//列 if(hh==0) retu 阅读全文
posted @ 2020-06-14 22:57 branna 阅读(214) 评论(0) 推荐(0)
摘要:901. 股票价格跨度 class StockSpanner { public: StockSpanner() { } int next(int price) { int d=1; while(!value.empty()&&price>=value.top())//价格栈不为空且当前的价格大于等于 阅读全文
posted @ 2020-06-13 22:07 branna 阅读(166) 评论(0) 推荐(0)
摘要:面试题63. 股票的最大利润 class Solution { public: int maxProfit(vector<int>& prices) { if(prices.size()<=1) return 0; int ans=prices[0]; int ans1=0; for(int i=1 阅读全文
posted @ 2020-06-13 22:05 branna 阅读(153) 评论(0) 推荐(0)
摘要:309. 最佳买卖股票时机含冷冻期 解释见代码: class Solution { public: int maxProfit(vector<int>& prices) { if(prices.size()<=1) return 0; int dp[prices.size()+10][3];//第一 阅读全文
posted @ 2020-06-09 13:52 branna 阅读(180) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/contest/1362 简单讲解:https://www.bilibili.com/video/BV15C4y1a7e5 A - Johnny and Ancient Computer // // main.cpp // CF // // Cr 阅读全文
posted @ 2020-06-05 12:37 branna 阅读(285) 评论(0) 推荐(0)
摘要:188. 买卖股票的最佳时机 IV 解释见代码: class Solution { public: int maxProfit(int k, vector<int>& prices) { if(prices.size()==0||k==0) return 0; if(k>=prices.size() 阅读全文
posted @ 2020-06-04 21:57 branna 阅读(182) 评论(0) 推荐(0)
摘要:123. 买卖股票的最佳时机 III 1. 解释见如下代码: class Solution { public: int maxProfit(vector<int>& prices) { if(prices.size()==0)//容易忘的点 return 0; int dp[prices.size( 阅读全文
posted @ 2020-06-04 00:10 branna 阅读(217) 评论(0) 推荐(0)
摘要:122. 买卖股票的最佳时机 II 解释见代码 class Solution { public: int maxProfit(vector<int>& prices) { int dp[prices.size()+100][2]; dp[0][0]=0;//第一天没买的利润为0 dp[0][1]=- 阅读全文
posted @ 2020-06-03 12:26 branna 阅读(200) 评论(0) 推荐(0)
摘要:121. 买卖股票的最佳时机 class Solution { public: int maxProfit(vector<int>& prices) { int less=2e5+100; int ans=0; for(int i=0;i<prices.size();i++) { less=min( 阅读全文
posted @ 2020-06-02 22:25 branna 阅读(220) 评论(0) 推荐(0)
摘要:714. 买卖股票的最佳时机含手续费 dp[i][0]表示手上没有股票,一个是之前没有股票,一个是之前有股票然后卖掉了 dp[i][1]表示手上有股票,一个是之前有股票,一个是之前没有股票,然后买了 class Solution { public: int maxProfit(vector<int> 阅读全文
posted @ 2020-06-02 21:47 branna 阅读(193) 评论(0) 推荐(0)
摘要:1414. 和为 K 的最少斐波那契数字数目 class Solution { public: int findMinFibonacciNumbers(int k) { //unsigned long long f[92]; f[1]=1;f[2]=1; if(k==1) return 1; int 阅读全文
posted @ 2020-06-02 15:47 branna 阅读(214) 评论(0) 推荐(0)
摘要:62. 不同路径 class Solution { public: int uniquePaths(int m, int n) { int dp[105][105]; for(int i=0;i<m;i++) for(int j=0;j<n;j++) dp[i][j]=0; dp[0][1]=1; 阅读全文
posted @ 2020-06-02 14:24 branna 阅读(203) 评论(0) 推荐(0)
摘要:1051. 高度检查器 class Solution { public: int heightChecker(vector<int>& heights) { int bb[1000]; for(int i=0;i<heights.size();i++) bb[i]=heights[i]; sort( 阅读全文
posted @ 2020-06-02 13:58 branna 阅读(152) 评论(0) 推荐(0)
摘要:1144. 递减元素使数组呈锯齿状 class Solution { public: int movesToMakeZigzag(vector<int>& nums) { int ji=0; int n=nums.size(); if(n==1) return 0; if(n==2&&nums[0] 阅读全文
posted @ 2020-06-02 13:24 branna 阅读(271) 评论(0) 推荐(0)
摘要:面试题 16.04. 井字游戏 一开始以为让我往里面放,结果是直接判断该局面谁赢了。。。 class Solution { public: string tictactoe(vector<string>& board) { int n=board.size(); bool flag=false; f 阅读全文
posted @ 2020-06-02 11:32 branna 阅读(624) 评论(0) 推荐(0)
摘要:链接: 1343. 大小为 K 且平均值大于等于阈值的子数组数目 题解: 滑动窗口和前缀和 1. class Solution { public: int numOfSubarrays(vector<int>& arr, int k, int threshold) { //滑动窗口解法 int le 阅读全文
posted @ 2020-06-01 14:13 branna 阅读(178) 评论(0) 推荐(0)
摘要:链接: 面试题53 - II. 0~n-1中缺失的数字 题解: 前缀异或或者二分 1. class Solution { public: int missingNumber(vector<int>& nums) { int size=nums.size(); int yi=0; for(int i= 阅读全文
posted @ 2020-06-01 13:43 branna 阅读(120) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.com/contest/1363、 视频讲解链接:https://www.bilibili.com/video/BV1NC4y1a7si/(审核后可看) A. Odd Selection // // main.cpp // CF // // Creat 阅读全文
posted @ 2020-06-01 09:46 branna 阅读(220) 评论(0) 推荐(0)