基础
文章平均质量分 60
triplebee
人狠话不多
展开
-
Codeforces 460C
比较裸的二分,但是比赛的时候脑抽,用树状数组瞎搞过了,但是边界条件没注意让hack了。后来看到有人写了很简单的版本,又过了一遍,提醒一下自己不能忘记基本算法。#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;in原创 2014-08-21 21:52:58 · 1480 阅读 · 0 评论 -
HDU5033
真蠢,和网络赛的时候我WA掉的思想已经很接近了,被他们又是说这说那的绕进去了,就是一个单调栈,栈中元素的纵坐标严格降低,并且栈中顶部两点之间斜率的绝对值要小于栈顶点和入栈点的斜率。这样是一个向上凸的图形(如果不考虑后面一个条件,是下凹凸都有的奇怪图形图形,后面计算最近切点时不满足性质,效率会退化),当查询点找到最近切点(姑且称作最近似切点,理解就知道我说的是什么意思了)时,这个点代表的楼房就是影响原创 2014-09-21 22:17:27 · 2144 阅读 · 0 评论 -
Codeforces 468B
很好的一道集合关系的题目,我比赛时用的是dfs,后来看到有人用并查集原创 2014-09-22 19:22:55 · 1287 阅读 · 0 评论 -
Codeforces 472D
看官方题解提供的是最小生成树,怎么也想不明白,you can guess and prove it!看了好几个人的代码,感觉实现思路全都不一样,不得不佩服cf题目想法的多样性下面说说我自己的理解,将1作为根,对于任意两点存在两种关系:1.一个点位于另一个点的子树上。两点到1的距离之差绝对值等于两点距离。2.两个点在某一个点的不同子树上。两点到1距离之和减去两点距离等于两倍某个点到1原创 2014-09-29 09:20:55 · 2279 阅读 · 0 评论 -
模拟猜单词游戏
模拟实现猜单词游戏,纯模拟,不涉及图形界面,注释很详细,虽然本人代码写得丑,但是希望可以给大家提供帮助#include#include#include#include#include#include#include#includeusing namespace std;int times=10;//全局变量,默认猜测次数typedef struct save{ c原创 2014-12-30 15:47:51 · 1862 阅读 · 1 评论 -
SVM原理详解
SVM入门(一)至(三)Refresh按:之前的文章重新汇编一下,修改了一些错误和不当的说法,一起复习,然后继续SVM之旅.(一)SVM的简介支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中[10]。 支转载 2016-07-25 14:53:31 · 3773 阅读 · 0 评论 -
Leetcode 13 Roman to Integer
Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.和12正好相反,理解转换规则,打一个表就行了class Solution {public: int romanToInt(string s) {原创 2016-08-28 11:39:10 · 1275 阅读 · 0 评论 -
Leetcode 14 Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings.以最短的字符串为limit,n方遍历所有字符串,虽然很暴力,但应该是最优解class Solution {public: string longestCommonPrefix(vector& strs) {原创 2016-08-28 12:39:19 · 1410 阅读 · 0 评论 -
Leetcode 15 3Sum + 有趣的小BUG
题目不难,意外发现一个容易被忽视的C++小Tips。题意为找出和为0的三元组,按升序排列,不重复。首先肯定是排序,然后我习惯性想到枚举两个数,最后一个用map或者hash来表示是否存在,然而这样不是和之前某两个数求和的问题一样了吗?Leetcode显然不会这么无聊,于是我想了很久,无意中发现两点法可行,复杂度和第一种用hash的情况一样,都为n方,但是实现起来要巧妙很多,枚举第一个数,以第一个数后边的一个数和末尾的数为两点,往中间缩,如果三者的和大于零,说明最大值需要小一些,原创 2016-08-28 19:45:06 · 1672 阅读 · 0 评论 -
Leetcode 45 Jump Game II
Given an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position.Your goal i原创 2016-09-09 10:17:38 · 973 阅读 · 0 评论 -
Leetcode 16 3Sum Closest
Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exact原创 2016-08-29 14:26:12 · 1316 阅读 · 0 评论 -
Leetcode 17 Letter Combinations of a Phone Number
题意为输出所有按键可能表示的字母组合。因为不知道按键组合有多长,所以可以用搜索来做,为了效率我用的是BFS,不过好像也没快到哪里去。先打印出字典表,用队列进行搜索,算法的复杂度最优就行了,不必在意常数项的问题。原创 2016-08-29 19:44:28 · 4267 阅读 · 2 评论 -
Leetcode 18 4Sum
想了半天还以为有什么高深的算法,没想到题解和之前的两道3Sum一样,两点法,没什么好说的。有很多人想了很多判断条件去优化程序效率,我觉得没什么必要,于是直接在15的代码上改了。附上前两道3Sum的地址,会做以后这题就肯定没问题了!原创 2016-08-29 20:19:13 · 1457 阅读 · 0 评论 -
Leetcode 46 Permutations
Given a collection of distinct numbers, return all possible permutations.For example,[1,2,3] have the following permutations:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1原创 2016-09-09 16:17:30 · 813 阅读 · 0 评论 -
Leetcode 47 Permutations II
Given a collection of numbers that might contain duplicates, return all possible unique permutations.For example,[1,1,2] have the following unique permutations:[ [1,1,2], [1,2,1], [2,1原创 2016-09-09 16:23:49 · 889 阅读 · 0 评论 -
Leetcode 48 Rotate Image
You are given an n x n 2D matrix representing an image.Rotate the image by 90 degrees (clockwise).Follow up:Could you do this in-place?将二维矩阵顺时针旋转90°,不能借助其他空间将矩阵分为四个部分,枚举一个部分的坐标,其他三个部分对应位原创 2016-09-09 17:53:53 · 862 阅读 · 0 评论 -
Leetcode 19 Remove Nth Node From End of List 超简洁代码
用一次遍历删除单链表从末尾数的第n个节点。利用类似DFS的递归解决,自认为还是挺简洁的。既然是Leetcode上的基础题,就要小题大做,我去看了一下discuss,发现有人用一种快慢指针的方法,即快指针先走n步,然后两者同时走,当快指针走到尾部时,慢指针就是要删除的节点,想法也挺好的。原创 2016-08-29 21:00:07 · 1366 阅读 · 0 评论 -
Leetcode 20 Valid Parentheses
括号匹配,书上讲栈应用的一个实例,新来的和栈顶元素比较就可以了。好在这题并没有像之前的某些题目一样丧心病狂到出各种不合常理的输入数据。原创 2016-08-30 16:52:41 · 1344 阅读 · 0 评论 -
Leetcode 21 Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.两个有序链表归并成一个有序链表,其实比较优美的解法是用递归去解决,代码十分简洁,然而我之前有题目这原创 2016-08-30 19:08:30 · 1085 阅读 · 0 评论 -
Leetcode 22 Generate Parentheses 搜索与DP的纠结
找出所有匹配的括号字符串,肯定是搜索啦!但是当n大的时候真的可以用搜索解决吗?加右括号的时候要注意之前的左括号必须多于右括号,然后搜吧?经常做算法题的朋友肯定知道,dfs在没有有效剪枝的情况下,复杂度是指数级的,所以虽然这题很多人是用的搜索过的,但是我并不觉得这是一个好方法。试想n为10,那么一般的搜索方法需要对20个位置进行搜多,对于2^n复杂度的方法,这绝不可能是高效的。所以后来我想到了用DP?想来想去DP好像也不行,因为DP的里面两层循环次数应该并非线性的,感觉有些像卡特兰数?具体我也说不清原创 2016-08-31 13:41:32 · 1385 阅读 · 0 评论 -
Leetcode 49 Group Anagrams
Given an array of strings, group anagrams together.For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return:[ ["ate", "eat","tea"], ["nat","tan"], ["bat"]]Note: Al原创 2016-09-12 12:49:06 · 835 阅读 · 0 评论 -
Leetcode 50 Pow(x, n)
Implement pow(x, n).快速幂,要注意n为INT_MIN和负数的情况,细碎小恶魔class Solution {public: double myPow(double x, long long n) { double result=1,base=x; while(n) { if(n<0)原创 2016-09-12 13:07:14 · 971 阅读 · 0 评论 -
Leetcode 24 Swap Nodes in Pairs
Given a linked list, swap every two adjacent nodes and return its head.For example,Given 1->2->3->4, you should return the list as 2->1->4->3.Your algorithm should use only constant space. Y原创 2016-09-01 20:57:46 · 644 阅读 · 0 评论 -
Leetcode 51 N-Queens
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.Given an integer n, return all distinct solutions to the n-queens puzzle.原创 2016-09-13 20:10:25 · 881 阅读 · 0 评论 -
Leetcode 52 N-Queens II
Follow up for N-Queens problem.Now, instead outputting board configurations, return the total number of distinct solutions.求N皇后解法数量和上一题一样,代码做了一点小修改class Solution {public: bool judg原创 2016-09-14 09:48:39 · 1043 阅读 · 0 评论 -
Leetcode 25 Reverse Nodes in k-Group
将单链表按K个一组逆置。思路是遍历链表,每遍历到K个就递归,返回值为当前一组的头节点,得到后面逆置的结果后,对本组进行逆置。K<2和长度不足K的时候特判!原创 2016-09-02 21:20:52 · 639 阅读 · 0 评论 -
Leetcode 26 Remove Duplicates from Sorted Array
Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this in place with原创 2016-09-03 12:36:33 · 612 阅读 · 0 评论 -
Leetcode 27 Remove Element
Given an array and a value, remove all instances of that value in place and return the new length.Do not allocate extra space for another array, you must do this in place with constant memory.原创 2016-09-03 12:44:37 · 491 阅读 · 0 评论 -
Leetcode 29 Divide Two Integers 位操作的巧妙运用
Divide two integers without using multiplication, division and mod operator.If it is overflow, return MAX_INT.题意很简单,实现两数除法,但是不能用乘法,除法和取模。怎么样?第一感觉就是用减法,但是被除数很大,除数为1的时候肯定会超时,那就模拟手工除法,按位减呗,这样每一位减的次数最多不会超过10次,很好,问题又来了,在不允许乘除取模的情况下,如何获取高位?卡住了。。。我想了一种列出原创 2016-09-03 16:37:03 · 829 阅读 · 0 评论 -
leetcode 6 ZigZag Conversion
z字形填字母,推导一个简单的关系就行了第一行和最后一行在拐点处只有一个字母,所以特殊处理;中间的每一行按奇偶列处理,首先(cnt-1)*(numRows-1)是不论哪一列都必须有的;然后奇数列从上往下填,偶数列从下往上填,详见代码;原创 2016-08-24 20:25:23 · 1376 阅读 · 0 评论 -
Leetcode 30 Substring with Concatenation of All Words 无序map的应用细节
先说说unordered_map。在做这题之前我是不知道这个数据结构的,我只会用map,这题学到了。两者的接口等基本一致,写代码会map的话,应该也会unordered_map。map的实现是红黑树,因而修改,查询等操作复杂度是log级别的,同时它的元素也是有序的;而unordered_map的实现是散列表,基本操作的复杂度是常数级别的,同时元素是无序的;显然在不关心元素顺序的情况下,后者是通常是更好的选择。值得一提的是,关于map的find函数,我在实际做题的时候有了新的认识,这点在代码中再说。原创 2016-09-04 15:17:19 · 1268 阅读 · 0 评论 -
Leetcode 7 Reverse Integer
Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321Easy,没什么好说的注意负数和溢出的情况class Solution {public: int reverse(int x) { long long ans=原创 2016-08-25 12:28:19 · 1459 阅读 · 0 评论 -
全排列生成算法:next_permutation
http://www.cnblogs.com/devymex/archive/2010/08/17/1801122.html概念全排列的生成算法有很多种,有递归遍例,也有循环移位法等等。C++/STL中定义的next_permutation和prev_permutation函数则是非常灵活且高效的一种方法,它被广泛的应用于为指定序列生成不同的排列。本文将详细的介绍prev_pe转载 2016-09-04 16:08:43 · 558 阅读 · 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 possible原创 2016-09-04 16:36:44 · 416 阅读 · 0 评论 -
Leetcode 10 Regular Expression Matching
正则表达式匹配,题意理解要注意.*可以理解为任意字符串,例如:isMatch("ab", ".*") → true“.”和普通字符的匹配非常容易,关键在于“*”,由于不知道它可能代表多少个字符,而前面的决定会影响后面,所以自然而然想到DFS。DFS暴搜的时候需要注意边界条件和终止搜索的条件,详见代码。原创 2016-08-25 18:43:59 · 1573 阅读 · 0 评论 -
Leetcode 8 String to Integer (atoi)
挺简单又挺难的一道题,就是坑太多,已经不是丧心病狂能形容了,估计这也是算法竞赛和这种面试题之间的区别吧。好吧,我承认我WA了10发,坑点请看代码注释。原创 2016-08-25 14:18:07 · 1392 阅读 · 0 评论 -
Leetcode 9 Palindrome Number
不多说了,直接贴代码,注意特判负数不是回文数就行了Determine whether an integer is a palindrome. Do this without extra space.click to show spoilers.Some hints:Could negative integers be palindromes? (ie, -1)If you are thinking of converting the integer to string, note the r原创 2016-08-25 14:40:08 · 1352 阅读 · 0 评论 -
Leetcode 33 Search in Rotated Sorted Array 二分查找变式
在循环错位的有序数组中找出特定元素。二分的一个变式,分情况讨论一下,详见注释。原创 2016-09-05 15:13:25 · 977 阅读 · 0 评论 -
Leetcode 12 Integer to Roman
Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.模拟题,主要是搞清楚罗马数字的写法和规则,然后打个表就可以了。class Solution {public: string intToRoman(int num)原创 2016-08-26 16:54:23 · 1414 阅读 · 0 评论 -
Leetcode 34 Search for a Range
Given a sorted array of integers, find the starting and ending position of a given target value.Your algorithm's runtime complexity must be in the order of O(log n).If the target is not found原创 2016-09-06 10:25:06 · 683 阅读 · 0 评论