- 博客(81)
- 收藏
- 关注
原创 动态规划 House Robber;Best Time to Buy and Sell Stock
动态规划,可以看这个http://www.360doc.com/content/13/0601/00/8076359_289597587.shtml我理解的,就是如果一个方法用递归,你发现过程会有重复,比如斐波那契数列,a(n)=a(n-1)+a(n-2),然后就会出现每个被算n次的悲剧(3=1+2,5=2+3,8=3+5,算5的时候3被递归了,算8的时候,3被递归了,5又递归了3,这样往后算
2017-03-28 10:49:41 427
原创 回溯法和bitset Binary Watch
这个是在回溯法的标签里的。回溯法大致是这样,按照深度优先搜索,在解空间树里往前走,如果不行就回退,然后换一条路。在换路的同时剪去错枝,就是一种蛮力的有剪枝的遍历......于是我先用的回溯:class Solution {public: vector readBinaryWatch(int num) { vector re; vector bit(10
2017-03-28 10:38:38 476
转载 Number of Boomerangs
这道题的思路不是很难,就是要挨个算距离,然后做一个表,用排列组合的A算所求的值。问题在于,这道题,可以说是时间换内存。由于平方的数很大,如果你在for的最外边用map,内存是不够的,所以要在第一个平方里面用,会造成一些时间上的重复,ab ba都要算class Solution {public: int numberOfBoomerangs(vector>& points) {
2017-03-16 23:15:25 292
转载 Find All Anagrams in a String
用一个窗口......hash表的活学活用......class Solution {public: vector findAnagrams(string s, string p) { vector pv(256,0),sv(256,0),re; if(s.size()<p.size()) return re; for(
2017-03-16 19:20:39 258
转载 Find the Difference
妈呀又是神奇的异或……虽然哈希也可以,然而跟异或比起来就不值一提了……class Solution {public: char findTheDifference(string s, string t) { char r=0; for(auto c:s) r^=c; for(auto c:t) r^=c; ret
2017-03-13 19:50:03 263
转载 Intersection of Two Arrays
这个思路比较简单,想说下语法点。unordered_map是键值对,键hash,unordered_set就是一个hash集合,只是key的集合,方便快速查找的。同时set是红黑树,所以有两个很好的特点,有序,没有重复,而且O(logN)的效率也很高。这里对nums1做了一个unordered_set,就用了没重复的特性。class Solution {public: vector
2017-03-13 19:25:09 275
原创 Word Pattern
这个hash的模式之前也用过,Isomorphic Strings这道题用过,就是搞两个表,对两个比较的模式,key塞字符串,值塞第一次出现的位置,然后两个表的字符串,如果是对应的,那么相应的key的值是一样的,如果不对应(模式不一样),那么相应的key的值就不一样。还有一个就是字符串有空格,怎样拆分,这里用了一个流的模式:class Solution {public: bool
2017-03-12 21:45:35 433
原创 Isomorphic Strings
哈希表,哈希的思想,不一定都要用unordered_map的....class Solution {public: bool isIsomorphic(string s, string t) { int Se[256]={0}; int Te[256]={0}; int n=s.length(); fo
2017-03-12 18:56:57 239
转载 Count Primes
啊,不用埃拉托斯特尼筛法,怎样都是time超了......具体筛法就是那个图,下面这段话是别处找的,能理解大致意思,但是有一点我理解的和他不一样,这个找素数应该是遍历中当前的下一个没被标记的就是素数,而不用全找完了再遍历一圈,看下面的代码就知道了。这道题给定一个非负数n,让我们求小于n的质数的个数,题目中给了充足的提示,解题方法就在第二个提示埃拉托斯特尼筛法Sieve of Era
2017-03-12 11:04:40 235
原创 Happy Number
第一种,用哈希,每次算完一个平方和去表里看一看,如果这个不是1还和表重了,那就不是:class Solution {public: bool isHappy(int n) { unordered_map Fi; while(n!=1) { int sum=0; while(n!=0)
2017-03-12 10:09:25 323
原创 Single Number
可以用hash表:class Solution {public: int singleNumber(vector& nums) { unordered_map re; for(int i=0;i<nums.size();i++) { if(re.find(nums[i])==re.end())
2017-03-12 09:25:30 248
原创 Battleships in a Board
连着的横着的或者竖着的x就是一艘船,每两艘不会连着,比如它给的x . . x. . . x. . . x这个左面的x是一艘,右面的三个x是一艘,然后. . .xxxxx. . .x这样的不会给你,因为中间的左3个x和右边的竖三个x挨起来了,它不会给你挨起来的船。所以一种比较简单的办法,数一共多少个船头,一个x,是船头的话,它的左边和上边要不是
2017-03-11 20:20:55 255
转载 Minimum Absolute Difference in BST && Find Mode in Binary Search Tree
这个的思路就是BST中序遍历,得到的就是从小到大排的顺序,然后依次算两个的差,就能得到最小值/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : v
2017-03-11 18:34:31 225
原创 Path Sum III
啊这个递归总是会加重或者少加,办法就是你写出来那个过程,就知道哪里重了哪里少加了......../** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) :
2017-03-08 21:13:29 214
原创 Lowest Common Ancestor of a Binary Search Tree
这是个BST,是有顺序的.......有顺序就好办了......./** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(N
2017-03-08 19:15:23 205
原创 Balanced Binary Tree
这个麻烦在,对以一个结点为根的树,左右树都Balance,左右树的差小于1同时满足才行。第一种,每一个算Balance都要算到下面的height,然后复杂度O(N^2)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeN
2017-03-07 14:56:07 258
原创 heap的一些实现,二叉堆,左式堆,二项队列
//这里的堆指的都是二叉堆,为了优先队列产生(优先队列,使一些特殊的结点在出队的时候要优先出来。出队入队操作变成了insert和delete)//堆是一个完全二叉树,除了最后一层,其余层都是满的。这样的话存储用一个数组就可以,任一个元素位置在i,其左儿子位置是2*i,右儿子位置是2*i+1,父结点是i/2向下取整//完全二叉树的高度是logN的下界,所以涉及到完全二叉树的操作,是跟这个高度相关
2017-03-03 15:48:21 738
原创 Convert Sorted Array to Binary Search Tree
递归......注意看一下这里面指针,用new。new返回的是指向创建的对象的指针。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val
2017-03-01 23:13:10 224
原创 Binary Tree Level Order Traversal II
层序遍历,先用一个栈把结点分层塞进去,再逐个出栈:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), ri
2017-03-01 18:58:16 209
原创 hash,分离链接法,探测散列表(二次探测),再散列的代码
数据结构与算法分析C++版的搬运工......#include#include#includeusing namespace std;//字符串hash,把每个字符的ASCII码加起来,然后对tablesize取模,tablesize注意选择,一种策略是选素数,这样能比较均匀//一种很简单的hash,但是如果tableSize很大的话,分布就不会均匀/*int hash(co
2017-03-01 11:48:39 988
原创 map的一个例子
吧一个字典中,有换一个字母还是一个单词并且超过15个的打出来。#include#include#include#includeusing namespace std;/**map应用的简单例子,说明了一些时候map怎么工作mapsalaries;salaries["Pat"]=75000; //左边调用operator[],因此插入“Pat”和一个值为0的double到
2017-02-28 15:11:51 312
原创 AVL树的一些实现
包含,插入,单旋转,双旋转,以及每次都要想好久的,除了结点里指针的其余的指针都想不清楚......又想了一遍......//AVL,二叉平衡树,任何一个结点,左右子树的高度差都不大于1的二叉搜索树template struct AvlNode{ Comparable element; AvlNode *left; AvlNode *right; int height; A
2017-02-27 17:08:22 252
原创 二叉搜索树的一些实现
二叉搜索树的实现,以及总要想的函数传参和返回值......一个关于返回值引用的链接:http://blog.csdn.net/keyouan2008/article/details/5741917//二叉排序树,每个结点的左子树都比这个结点小,右子树比这个结点大//构造,析构,找最大,最小,插入,删除,找树中是否含有某一个结点template class BinarySear
2017-02-27 15:18:03 336
原创 Next Greater Element I
用遍历的办法,挨个比,效率比较低:class Solution {public: vector nextGreaterElement(vector& findNums, vector& nums) { int n=findNums.size(); int m=nums.size(); vector flag;
2017-02-25 17:39:16 248
原创 leetcode stack 155 225 232
easy的栈,155取最小的元素,用两个栈,第二个栈存当前的栈的最小元素,然后弹出的时候根据情况弹出元素:class MinStack {public: /** initialize your data structure here. */ MinStack() { } void push(int x) { s1.p
2017-02-25 16:24:03 358
原创 Search Insert Position
这个思路比较简单,用二分查找。但是有一个问题,也是平时的问题,简单的问题容易因为边界条件等等想复杂,这道题就是,其实可以先写出来最主要的主干,然后看看这个主干能否适应这个问题,像二分查找,主干就是while(low我的版本:class Solution {public: int searchInsert(vector& nums, int target) { in
2017-01-29 19:04:28 456
原创 Reverse Linked List
这道题是把链表倒过来......活久见递归自己搞对了......递归效果好,不会有重复:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * };
2017-01-29 15:20:24 189
原创 (重点)Remove Linked List Elements和Delete Node in a Linked List
删除操作,**是可以不考虑head的特殊情况的:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution
2017-01-29 14:40:09 352
转载 Intersection of Two Linked Lists
这道题找两个链表的交叉点,要点是找两个链表的长度差。找到长度差,然后去掉这个差两个链表一起走,就会相遇。有交叉点就在交叉点相遇,没有的话就是NULL。这个一个走到尾就到另一个的头结点的作用,就是把这个两个链表的差给去掉了。/** * Definition for singly-linked list. * struct ListNode { * int val; * L
2017-01-29 13:21:27 180
原创 Linked List Cycle
判断链表有没有环,可以用追击问题,一个走两步,一个走一步,如果能碰一起就是有环。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */
2017-01-28 20:00:11 190
原创 Remove Duplicates from Sorted List
链表问题如果没编过,查代码一定有哪里出现指针飞了,这个地方是null然而还操作....../** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }
2017-01-28 19:29:55 162
转载 链表List的代码,但是缺少保护
template //这里的实现是不改变data的class List{private: struct Node //struct是public的,这里把它作为private,也没毛病,就是Node里的东西List类都能用 { Object data; Node *prev; Node *next; Node(const Obje
2017-01-28 12:15:49 313
原创 i++和++i
i++是先使用再自加,比如:i=3;m=i++;那么m就是3,之后i是4;++i是先自加再使用,比如:i=3;m=i++;那么m和i都是4。前缀形式比后缀形式是快的,(++i比i++快),所以同样的需求,尽量用++i,比如for循环......
2017-01-28 11:15:13 287
原创 Merge Sorted Array
从后往前比,因为是往nums1里面插入,所以while循环nums2而不是nums1,当循环结束,nums1就不用动了:class Solution {public: void merge(vector& nums1, int m, vector& nums2, int n) { int i=m-1; int j=n-1;
2017-01-25 21:18:46 160
原创 Plus One
比较简单的是弄个进位,每一个都是加进位,然后遍历:class Solution {public: vector plusOne(vector& digits) { int in=1; int n=digits.size(); for(int i=n-1;i>=0;i--) { int temp=d
2017-01-25 20:38:43 347
原创 python中mysql变量的问题以及注入攻击
mysqldump -u root -p ipinyou>G:\20170106beifen\a20170106.sql这个命令可以用来备份数据库,-p后面是库的名字,>后面是要导出来的文件的名字,这个sql就是最后要的,但是我不懂怎么恢复......好像是source这个sql就行了.....还有在excute里使用变量,正常是%s占位(无论什么型的都是%s占位,不加引号什么的,然后ex
2017-01-06 19:44:21 536
原创 这两天遇到的scikit-learn的问题
scikit-learn的onehotEncoder,是只能根据整数来进行one-hot编码的,然后我的数据很多都是,string,这样子有一个办法,就是先LableEncoder再onehotEncoder,然而这样子必须一行一行算,是不能一个矩阵来的,这个办法数据量小还可以,多了的话就哭了......然后这个办法解决用pandas的get_dummies。这个可以直接做one-hot。然而
2017-01-04 16:18:53 553 1
转载 数据库灾难...
因为强制关机所以数据库崩了,只有frm和ibd格式要恢复数据....因为表空间以及ibddata的问题折磨的想哭,但是这个解决办法救了我:比较保险的操作方法是新建一个MySQL的数据目录,并启动另外一个MySQL实例,将备份的数据库目录之间复制到MySQL的数据目录中,启动后对待修复的数据表进行操作时出现以下错误[Warning] InnoDB: Cannot open tab
2017-01-02 19:47:02 741
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人