Leetcode
文章平均质量分 63
于老师的父亲王老爷子
这个作者很懒,什么都没留下…
展开
-
特殊二分总结:shopee二面算法题(又是该死的二分
最近面了shopee新加坡office,在二面中遇到了一道有意思的题目。题目分为两部分,开始比较简单,followup会有难度(但是也是之前遇到过总结过的二分,但是该死的又是没有自己想出来题目:给出一个升序数组,其中每个数字代表的是每个空位置的坐标。现在要给三个人安排位置,要求使他们之间距离最大(以相邻两个人距离中较小的距离为距离)解法:首先肯定要把一个安排在最左边,一个在最右边(贪心,...原创 2019-11-08 15:57:10 · 1931 阅读 · 0 评论 -
1039. Minimum Score Triangulation of Polygon
做这题的时候犯的错误应该是:只看到了自己画出来的,举的几个例子,而没有将它抽象出来,得到一个普遍的方法。先说自己开始的做法:(是错误的)class Solution {public: int minScoreTriangulation(vector<int>& A) { int sz = A.size(); if (sz &l...原创 2019-11-04 11:00:11 · 261 阅读 · 0 评论 -
优先队列自定义的注意点
自定义优先队列结构的注意点:1.优先队列顺序和自己定义的是反的,而且默认大根堆2.需要自己定义顺序的时候。1)需要写出container,一般就是vector 2)写比较器就是像自己这里写的这样。3.一般如果不是自定义结构的话,而且只需要改为小根堆,使用greater就行比较器的例子:struct cmp { bool operator() (pair<int, pair&...原创 2019-11-03 16:09:26 · 212 阅读 · 0 评论 -
KS 2018 Round A:第二题
这一题我快做出阴影了,当然题目不好做,我看了别人的讲解才做出来,但是自己实现的时候各种狗屁错误,我tm。。。本题做法:E(k):表示可以redip k次的最优期望。E(0) = sum(Vi) / NE(k): 如果取出的v > E(k-1),那么留下;否则redip。转移方程为:E(k) = (smallerCount * E(k-1) + largerSum) / N;这里...原创 2019-11-01 21:40:48 · 120 阅读 · 0 评论 -
926. Flip String to Monotone Increasing
又是一题很有意思的题目。而且是自己想出来的:)开始想了一些其他的方法,dp,但是不管用,后来就想可能不是通用解法,而是有自己的解法的。思路是这样的:题目的意思翻译过来,就是数组从前往后找到一个位置,该位置前面的1全变为0,该位置后面的0全变为1,找到一个位置使这样的变换最少。但是我们需要每次一个位置都把它左右全部都扫描一遍找到需要的变换数吗?不需要,只需要两个数组,分别记录从左到右的1的...原创 2019-10-31 20:12:44 · 150 阅读 · 0 评论 -
395. Longest Substring with At Least K Repeating Characters
这一题很有启发意义,自己的分治不太会用,这一题如果想不到分治确实其他方法就不太好用了。class Solution {public: int longestSubstring(string s, int k) { return helper(s, 0, s.size()-1, k); }private: int helper(string& ...原创 2019-10-31 19:48:07 · 98 阅读 · 0 评论 -
140. Word Break II
缓存的重要性:方法一:直接dfs,TLEclass Solution {public: vector<string> wordBreak(string s, vector<string>& wordDict) { unordered_set<string> dict(wordDict.begin(), wordDict.e...原创 2019-10-28 10:26:50 · 101 阅读 · 0 评论 -
871. Minimum Number of Refueling Stops
难得,自己想出来的hard。class Solution {public: int minRefuelStops(int target, int startFuel, vector<vector<int>>& stations) { int remain = startFuel; priority_queue<in...原创 2019-10-27 21:03:04 · 114 阅读 · 0 评论 -
KS 2018 Round A:第一题
#include <iostream>#include <vector>#include <algorithm>#include "math.h"using namespace std;long long fun(long long num);int main() { int T; cin >> T; long...原创 2019-10-26 20:54:35 · 141 阅读 · 1 评论 -
Kickstart做题注意点
统一用long long,不要夹杂着int,不然错误不好找数字的进位注意原创 2019-10-26 20:49:04 · 151 阅读 · 0 评论 -
421. Maximum XOR of Two Numbers in an Array
class Solution {public: int findMaximumXOR(vector<int>& nums) { int max = 0, mask = 0; for (int i = 31; i >= 0; --i) { mask |= (1 << i); ...原创 2019-10-25 11:32:06 · 108 阅读 · 0 评论 -
60. Permutation Sequence
只是想说一个错误的解法:class Solution {public: string getPermutation(int n, int k) { string num = string(""); for (char c = 1; c <= n; ++c) num += to_string(c); dfs(...原创 2019-10-24 19:29:18 · 133 阅读 · 0 评论 -
987. Vertical Order Traversal of a Binary Tree
终于做到了这一题,发现这一题不是这么好做,细节有点多。首先,考虑bfs还是dfs。因为会有重叠,选用bfs。然后考虑怎么确定每个点在哪一列当中,我们记录每个点它的x(以root的x为0),然后记录x为0的那一列的index是多少,然后可以确定下来。ok,然后我们层序遍历,需要注意重叠的情况,重点是重叠的情况:1.可能不止两个会重叠在一起。2.普通的层序遍历,重叠在一起的不一定会在que...原创 2019-10-24 16:21:31 · 103 阅读 · 0 评论 -
854. K-Similar Strings
回溯法还是比较好理解的,但是遗憾自己没有写出来。class Solution {public: int kSimilarity(string A, string B) { unordered_map<string, int> memo; return backtrack(A, B, memo, 0); }private: ...原创 2019-10-24 10:37:47 · 181 阅读 · 0 评论 -
43. Multiply Strings
发现了简单的做法:class Solution {public: string multiply(string num1, string num2) { reverse(num1.begin(), num1.end()); reverse(num2.begin(), num2.end()); int sz1 = num1.size(),...原创 2019-10-21 09:49:52 · 89 阅读 · 0 评论 -
36. Valid Sudoku
之前没有写过这么简洁的方法:class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { int used1[9][9] = {0}, used2[9][9] = {0}, used3[9][9] = {0}; for (int i =...原创 2019-10-20 09:35:32 · 96 阅读 · 0 评论 -
653. Two Sum IV - Input is a BST
三种方法:1./** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }...原创 2019-10-17 11:04:22 · 105 阅读 · 0 评论 -
713. Subarray Product Less Than K
暴力解法:class Solution {public: int numSubarrayProductLessThanK(vector<int>& nums, int k) { if (k == 0) return 0; int retCnt = 0; for (int i = 0; i &l...原创 2019-10-17 11:02:41 · 105 阅读 · 0 评论 -
659. Split Array into Consecutive Subsequences
这题还是很有意思的。class Solution {public: bool isPossible(vector<int>& nums) { unordered_map<int, int> dict, temp;//dict存储还没有分配的数字,temp存储已经ok的所有序列的下一个可添加的数字 for (int num...原创 2019-10-16 10:41:57 · 91 阅读 · 0 评论 -
90. Subsets II
这道题写的时候有一些疑惑的地方,这里再记录一下class Solution {public: vector<vector<int>> subsetsWithDup(vector<int>& nums) { vector<vector<int>> ret; vector<int&g...原创 2019-10-12 10:25:33 · 67 阅读 · 0 评论 -
LeetCode:309. Best Time to Buy and Sell Stock with Cooldown
买卖股票系列的第5题。题目是:Say you have an array for which the ith element is the price of agiven stock on day i.Design an algorithm to find the maximum profit. You may complete asmany transactions as you li...原创 2018-10-22 12:11:34 · 188 阅读 · 2 评论 -
LeetCode:188. Best Time to Buy and Sell Stock IV
题目是这样的:Say you have an array for which the ith element is the price of agiven stock on day i.Design an algorithm to find the maximum profit. You may complete atmost k transactions.Note: You may ...原创 2018-10-21 00:33:11 · 314 阅读 · 0 评论 -
LeetCode:160. Intersection of Two Linked Lists
题目是:Write a program to find the node at which the intersection of twosingly linked lists begins.也就是两个链表是从哪一节点开始相交的。这题不难,但是很有意思,有些解法会让你感到“哦,还能这样!”1.解法一分别遍历两条链表,将元素分别放到两个堆栈。然后比较堆栈顶的两个元素,如果相同,则都弹...原创 2018-10-28 11:24:24 · 140 阅读 · 0 评论 -
LeetCode:132. Palindrome Partitioning II
题目是这样:Given a string s, partition s such that every substring of thepartition is a palindrome.Return the minimum cuts needed for a palindrome partitioning of s.例子:Input: “aab”Output: 1Explanat...原创 2018-10-21 11:36:45 · 117 阅读 · 0 评论 -
LeetCode:148. Sort List
链表排序的问题,要求时间复杂度为O(nlogn),空间复杂度为常数。比如:Input: 4->2->1->3Output: 1->2->3->4这道题的思路是用归并排序,我们先看代码:class Solution {public: ListNode* sortList(ListNode* head) { if (!head...原创 2018-10-25 19:45:46 · 88 阅读 · 0 评论 -
LeetCode:142. Linked List Cycle II
题目是这样:Given a linked list, return the node where the cycle begins. If thereis no cycle, return null.Note: Do not modify the linked list.Follow up: Can you solve it without using extra space?如果链...原创 2018-10-23 21:53:18 · 183 阅读 · 0 评论 -
LeetCode:200. Number of Islands
在看这篇文章前,你也许想要先看看并查集是如何实现的:https://blog.csdn.net/weixin_43462819/article/details/83626022这一题是在复习完并查集之后的练手的题目。题目是这样的:Given a 2d grid map of '1’s (land) and '0’s (water), count the numberof islands....原创 2018-11-01 22:11:42 · 147 阅读 · 0 评论 -
LeetCode:128. Longest Consecutive Sequence
在看这篇文章前,你也许想要先看看并查集是如何实现的:https://blog.csdn.net/weixin_43462819/article/details/83626022这一题是实现完并查集之后练手的第二题,可以先看看第一题:https://blog.csdn.net/weixin_43462819/article/details/83628052题目是这样的:Given an u...原创 2018-11-02 10:49:30 · 120 阅读 · 0 评论 -
Leetcode:222. Count Complete Tree Nodes
题目:给定一颗完全二叉树,就算共有多少节点1.首次尝试拿到题目第一反应觉得很简单啊,刷刷刷写下如下代码:class Solution {public: int countNodes(TreeNode* root) { if(!root) return 0; if(!root->left && !root->right) r...原创 2018-11-13 20:33:27 · 167 阅读 · 0 评论 -
Leetcode:297. Serialize and Deserialize Binary Tree
题目:Serialization is the process of converting a data structure or objectinto a sequence of bits so that it can be stored in a file or memorybuffer, or transmitted across a network connection link ...原创 2018-11-14 17:58:55 · 155 阅读 · 0 评论 -
LeetCode:84. Largest Rectangle in Histogram
题目:Given n non-negative integers representing the histogram’s bar heightwhere the width of each bar is 1, find the area of largest rectanglein the histogram.Above is a histogram where width of e...原创 2018-11-16 14:30:20 · 130 阅读 · 0 评论 -
LeetCode:4. Median of Two Sorted Arrays
题目:There are two sorted arrays nums1 and nums2 of size m and nrespectively.Find the median of the two sorted arrays. The overall run timecomplexity should be O(log (m+n)).You may assume nums1 an...原创 2018-11-20 10:35:27 · 144 阅读 · 0 评论 -
LeetCode:11. Container With Most Water
题目:Given n non-negative integers a1, a2, …, an , where each representsa point at coordinate (i, ai). n vertical lines are drawn such thatthe two endpoints of line i is at (i, ai) and (i, 0). Find ...原创 2018-11-20 10:49:54 · 149 阅读 · 0 评论 -
LeetCode:31. Next Permutation
题目:Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.If such arrangement is not possible, it must rearrange it as the lowest possib...原创 2018-11-23 11:08:37 · 122 阅读 · 0 评论 -
LeetCode:39. Combination Sum
给一组数和一个target,给出所有以这组数中元素组成该target的不同组合。这应该是回溯法的一个比较简单的实例,但是因为之前没有写过回溯法的代码,所以在这里简单的记录以下。有时会遇到这样一类题目,它的问题可以分解,但是又不能得出明确的动态规划或是递归解法,此时可以考虑用回溯法解决此类问题。回溯法的优点 在于其程序结构明确,可读性强,易于理解,而且通过对问题的分析可以大大提高运行效率。但是...原创 2018-11-24 21:06:52 · 154 阅读 · 0 评论 -
LeetCode:40. Combination Sum II
题目大意是由一组数任意组合,使其和等于target,每个数只能用一次,而且答案不能重复。题目在第39题上加了每个数字只能用一次的限制条件。需要对代码稍作修改。这里用了一个isVisited数组来记录candidates中某个数是否在当前nums中class Solution {public: vector<vector<int>> combinationS...原创 2018-11-24 22:02:45 · 112 阅读 · 0 评论 -
LeetCode:33. Search in Rotated Sorted Array
题目:Suppose an array sorted in ascending order is rotated at some pivotunknown to you beforehand.(i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]).You are given a target value to search. If fou...原创 2018-11-23 16:03:41 · 97 阅读 · 0 评论 -
LeetCode:239. Sliding Window Maximum
写这一题是因为这一题有特定的解法,记录一下防止忘记。1.特定解法针对这一题有一种专门的数据结构,叫做Monotonic Queue。一个deque,里面存放的是数组的索引,从前往后代表了下一个最大值的候选者。每次迭代到一个新的数组元素:1)看看需不需要淘汰最大的那个索引,因为它可能随着窗口的滑动而到外面去了。2)循环的将deque的尾元素代表的索引值对应的数组中的值和当前的那个值比较,如果当...原创 2018-12-13 19:30:07 · 118 阅读 · 0 评论 -
LeetCode:169. Majority Element && 229. Majority Element II
找出数组中出现次数最多的数字。记录这题是因为这题有特定的算法,叫做Boyer-Moore Majority Vote algorithm。另外,在第二题实现该算法时有一些细节需要注意。Majority Elementclass Solution {public: int majorityElement(vector<int>& nums) { ...原创 2018-12-14 20:20:01 · 141 阅读 · 0 评论 -
LeetCode:152. Maximum Product Subarray
1.键索引计数法适用于小整数键的简单排序。具有稳定性(稳定性:一个排序算法能够保留数组中相同元素的相对位置,则它是稳定的)突破了NlogN的排序算法时间下限:因为它这里不需要比较键,只需要访问数据即可。#include &lt;vector&gt;#include &lt;string&gt;#include &lt;iostream&gt;struct info { in...原创 2018-12-09 21:19:43 · 173 阅读 · 1 评论