C++
jinnsjj
这个作者很懒,什么都没留下…
展开
-
[LeetCode]36. Valid Sudoku
36. Valid Sudoku要验证数独的棋盘,就是三个标准,行没有重复,列没有重复以及3x3格子没有重复。最开始的思路是建立1*9的hash表,依据这个标准检测三次,但这样带来一个问题是需要遍历棋盘三次。但其实可以扩大hash表,只需遍历棋盘一次。class Solution {public: bool row[9][9] = {0}; // 9行的hash bo...原创 2018-07-01 14:20:43 · 223 阅读 · 0 评论 -
[LeetCode]37. Sudoku Solver
37. Sudoku Solver求解数独。前两天做了验证数独那道题,当时对于遍历hash的使用有了一些感悟,但看这道题时候特别头疼。这两天HackerRank也刷了一下,对于DFS和BFS的理解加深了一些,渐渐的思路就变得清晰。其实是很暴力的解法,但把他转化为代码,对几天前的我来说还有一些难度。经过这两天的学习,总算是可以勉强完成,但参考别人的答案后,果然进步空间还比较大。我之前的版本,...原创 2018-07-03 19:03:22 · 334 阅读 · 0 评论 -
堆,堆在C++中用法
Heap堆有最大堆与最小堆,也有对应的push和pop操作。在最大堆中,最大的元素在堆顶,pop会将最大的元素推出, 最小堆则反之。C++中的用法C++中的堆,要基于向量使用。操作基于三个函数std::make_heap,std::push_heap,std::pop_heap,并且要配合push_back与pop_back使用。需要#include <algorithm&g...原创 2018-07-03 15:06:01 · 1218 阅读 · 0 评论 -
[HackerRank]BFS Shortest Reach in a Graph
BFS: Shortest Reach in a Graph Challenge Name: BFS: Shortest Reach in a Graph Consider an undirected graph consisting of nnn nodes where each node is labeled from 111 to nnn and the edge betw...原创 2018-07-03 15:04:04 · 665 阅读 · 0 评论 -
[HackerRank]Merge Sort Counting Inversions
Merge Sort: Counting Inversions这道题设定了一个情景,但其实是让我们复习merge sort。那么我们就来复习一下merge sort。Merge sort的思想是先把数组分段,递归进行mergesort,再合并起来。有一个细节,在合并的过程中,可以借助合并的两段都是sort好的数列,利用这一特性合并起来会较快一些。送上伪代码:MergeSort(ar...原创 2018-07-02 21:32:04 · 719 阅读 · 0 评论 -
[HackerRank]Sorting Comparator
Sorting: Comparator这道题让我们将分数从大到小排序,遇到分数相同时候,按名字字母从小到大排序。一开始我还想着要手写一个快速排序,后来发现这道题其实是一个教学,教我们字母自定义比较函数,并用于STL的函数中。这样一来思路就很清晰了,比较函数很简单,如果分数高,或者分数相同但字母小,则返回true。bool comp(Player& a, Player&a...原创 2018-07-02 19:38:54 · 358 阅读 · 0 评论 -
[HackerRank]Tries Contacts
Tries: Contacts这题让我门建立一个树来存电话簿的名字,并能够返回以某一字符串开头的名字有多少个。难点在与自己建立一个数据结构。我的方法是建立一个字符树,每个节点存下有几个children,以及一个hash表,用于索引之后的字符。如下:struct wordTree{ int cnt; unordered_map<char, wordTree*&g...原创 2018-07-02 11:32:36 · 406 阅读 · 0 评论 -
[LeetCode]42. Trapping Rain Water
42. Trapping Rain Water对于这题我只能说,好好看好好学。 初看题目也有想到用堆栈,但对于写法却一头雾水。class Solution {public: int trap(vector<int>& height) { stack<int> hIdx; int i = 0, h = 0, res ...原创 2018-07-01 21:10:21 · 242 阅读 · 0 评论 -
[LeetCode]41. First Missing Positive
41. First Missing Positive题目要求找出数组中第一个缺失的正数。难点在与时间复杂的要求O(n),空间复杂度要求O(1)。又是一道不会做抄答案的题目。思路是把遇到的每一个数放到元数组中排序的位置。class Solution {public: int firstMissingPositive(vector<int>& nums) ...原创 2018-07-01 18:39:59 · 215 阅读 · 0 评论 -
[LeetCode]40. Combination Sum II
40. Combination Sum II与上一题几乎一模一样,代码也可以复用。问题在于这次不可以重复,自然就想到了把DFS函数中的start加1。然而由于candidates中存在同样的数字,所以重复不能完全避免。另一方面,重复的数字是有必要出现在combination中的。这又使我苦恼。参考大佬:http://www.cnblogs.com/grandyang/p/4419386.htm...原创 2018-07-01 18:05:09 · 214 阅读 · 0 评论 -
[LeetCode]39. Combination Sum
39. Combination Sum题目要求列出所有的可能情况,我也想到了要使用递归去解决,但具体的方法却很头疼,依旧是参考了大佬的答案,豁然开朗http://www.cnblogs.com/grandyang/p/4419259.html。DFS中start变量的引用可以防止递归的答案重复,很优秀。正如大佬所说,返回所有符合要求的解的题目就想到递归,而思路多相似,要新写一个递归的函...原创 2018-07-01 17:49:49 · 288 阅读 · 0 评论 -
[LeetCode]1. Two Sum
1. Two SumGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not u...原创 2018-07-01 12:58:40 · 181 阅读 · 0 评论 -
堆,堆在C++中用法
Heap堆有最大堆与最小堆,也有对应的push和pop操作。在最大堆中,最大的元素在堆顶,pop会将最大的元素推出, 最小堆则反之。C++中的用法C++中的堆,要基于向量使用。操作基于三个函数std::make_heap,std::push_heap,std::pop_heap,并且要配合push_back与pop_back使用。需要#include &amp;lt;algorithm&amp;g...原创 2018-07-01 11:49:01 · 689 阅读 · 0 评论 -
[LeetCode]34. Search for a Range
34. Search for a Rangehttps://leetcode.com/problems/search-for-a-range/description/ 与上一题很相似,原理很清晰,两次二分搜索,一次找前边界一次找后边界,不必在找到target后直接break。但我真的是太讨厌二分搜索了,边界条件实在头疼。class Solution {public: ve...原创 2018-06-30 20:08:17 · 240 阅读 · 0 评论 -
[LeetCode]33. Search in Rotated Sorted Array
33. Search in Rotated Sorted Arrayhttps://leetcode.com/problems/search-in-rotated-sorted-array/description/这道题的核心思想在于原数组是一个递增,即使旋转后,也具有这一性质,只不过递增的数组变成了两个。所以使用binary search即可。但要注意一些细节,比如if中的条件if (n...原创 2018-06-30 19:21:53 · 158 阅读 · 0 评论 -
[LeetCode] 32. Longest Valid Parentheses
Longest Valid Parenthesesclass Solution {public: int longestValidParentheses(string s) { stack&amp;amp;lt;int&amp;amp;gt; stk; int res = 0; int start = 0; for (int i = 0; i&amp;amp;...原创 2018-06-30 18:12:31 · 243 阅读 · 0 评论 -
[LeetCode]35. Search Insert Position
35. Search Insert Positioneasyhttps://leetcode.com/problems/search-insert-position/description/这道题是一道比较简单的二分搜索题,最近的这几道题都是用二分搜索,这题的讨论要简单一点,正好适合看看二分的条件。class Solution {public: int searchI...原创 2018-07-01 13:28:08 · 140 阅读 · 0 评论 -
[LeetCode]38. Count and Say
38. Count and Say这题最开始题目没看懂。看懂后发现和Cracking the Coding Interview里面的字符串压缩的题目(1.6)很像,就是计算一个数字重复几次,然后打印重复的数量和该数字。 在字符串压缩的题目中,我用了好几个if判断,这次看了http://www.cnblogs.com/grandyang/p/4086299.html把循环优化为while,代码...原创 2018-07-01 15:50:12 · 169 阅读 · 0 评论 -
[LeetCode]43. Multiply Strings
43. Multiply Strings这道题要做的是将两个写成了string的数字相乘,思路很清晰,就是手算乘法的式子。我的想法是把这个过程模块化,写作一个字符乘以一个string和错位相加两个部分,可能实力还有欠缺写的不是很简洁。class Solution {public: string multiply(string num1, string num2) { ...原创 2018-07-03 22:39:53 · 248 阅读 · 0 评论