12 2017 档案

摘要:Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below 阅读全文
posted @ 2017-12-31 17:54 jeysin 阅读(111) 评论(0) 推荐(0) 编辑
摘要:Given a 32-bit signed integer, reverse digits of an integer. Example 1: Example 2: Example 3: Note:Assume we are dealing with an environment which cou 阅读全文
posted @ 2017-12-31 16:47 jeysin 阅读(118) 评论(0) 推荐(0) 编辑
摘要:The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font 阅读全文
posted @ 2017-12-31 16:26 jeysin 阅读(122) 评论(0) 推荐(0) 编辑
摘要:cmd /k C:\python27\python "(FULL_CURRENT_PATH)" & PAUSE & EXIT cmd /k C:\python27\python "(FULL_CURRENT_PATH)" & PAUSE & EXIT cmd /k C:\python27\pyt 阅读全文
posted @ 2017-12-30 21:46 jeysin 阅读(989) 评论(0) 推荐(0) 编辑
摘要:最近想在Notepad++中装一个插件的时候才发现Notepad++中竟然没有plugin manager,网上找了很久,试了很多方法都不奏效,唯独这个方法有效,现在问题已解决,方法贴下来,免得以后又遇到: how 2 get plugin manager:download pm from http 阅读全文
posted @ 2017-12-30 21:25 jeysin 阅读(2160) 评论(0) 推荐(0) 编辑
摘要:Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example: Example: 解法3:中心拓展法。时间复杂度为 阅读全文
posted @ 2017-12-30 11:46 jeysin 阅读(134) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入两个链表,找出它们的第一个公共结点。 思路:先分别求出两个链表的长度m,n。长的那个链表先走m-n步(假设m>=n),然后同时走,碰到相同节点即为第一个公共节点,时间复杂度为O(m+n) 输入两个链表,找出它们的第一个公共结点。 思路:先分别求出两个链表的长度m,n。长的那个链表先走m 阅读全文
posted @ 2017-12-29 21:39 jeysin 阅读(106) 评论(0) 推荐(0) 编辑
摘要:题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述: 题目保证输入的数组中没有的相同的数字 数据范围: 对于%50的数据,siz 阅读全文
posted @ 2017-12-29 18:48 jeysin 阅读(121) 评论(0) 推荐(0) 编辑
摘要:Given 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 ex 阅读全文
posted @ 2017-12-29 14:22 jeysin 阅读(108) 评论(0) 推荐(0) 编辑
摘要:题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 思路:哈希表存储出现的次数。两次遍历字符串,时间复杂度为O(n),空间复杂度为O(1) 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并 阅读全文
posted @ 2017-12-29 10:43 jeysin 阅读(94) 评论(0) 推荐(0) 编辑
摘要:题目描述 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数 思路:新的丑数由前面已有的丑数乘以2, 3, 5得到。维护T2,T3,T5,新的丑数即为min(M2, M3, 阅读全文
posted @ 2017-12-29 10:31 jeysin 阅读(161) 评论(0) 推荐(0) 编辑
摘要:There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity sh 阅读全文
posted @ 2017-12-28 22:35 jeysin 阅读(162) 评论(0) 推荐(0) 编辑
摘要:Given a string, find the length of the longest substring without repeating characters. Examples: Given "abcabcbb", the answer is "abc", which the leng 阅读全文
posted @ 2017-12-28 17:44 jeysin 阅读(125) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路:自定义排序规则,将数组排好序之后顺序输出就是结果 1 class Solution { 2 public: 阅读全文
posted @ 2017-12-28 15:37 jeysin 阅读(130) 评论(0) 推荐(0) 编辑
摘要:题目描述 数字按照0123456789101112131415161718192021...的顺序排列。第5位(从0开始计数)为5,第13位为1,第19位为4…… 求任意第n位对应的数字 阅读全文
posted @ 2017-12-28 13:45 jeysin 阅读(373) 评论(0) 推荐(0) 编辑
摘要:题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。 感觉《 阅读全文
posted @ 2017-12-28 10:48 jeysin 阅读(221) 评论(0) 推荐(0) 编辑
摘要:You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contai 阅读全文
posted @ 2017-12-27 23:20 jeysin 阅读(133) 评论(0) 推荐(0) 编辑
摘要:题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1 阅读全文
posted @ 2017-12-27 15:58 jeysin 阅读(89) 评论(0) 推荐(0) 编辑
摘要:题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 解法1:数组不排序,基于Partition函数找中位数。插入数字和找出中位数的时间复杂度分别为O(1) 阅读全文
posted @ 2017-12-27 14:19 jeysin 阅读(135) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4, 解法1:基于Partition函数的时间复杂度为O(n)的解法,只有当我们可以修改原始数组时可用 1 class Solution { 2 public: 3 int 阅读全文
posted @ 2017-12-27 10:25 jeysin 阅读(125) 评论(0) 推荐(0) 编辑
摘要:题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解法1:基于Partition函数的时间复杂度为O(n)的算法。注意最后检查数 阅读全文
posted @ 2017-12-26 16:35 jeysin 阅读(133) 评论(0) 推荐(0) 编辑
摘要:题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 思路:以前序遍历为基础,考虑NULL指针。将NULL指针记为$。注意字符串的处理,将数字转化为字符串,将字符串转化为数字。 1 class Solution { 2 public: 3 void WriteToStr(int val, cha 阅读全文
posted @ 2017-12-26 15:42 jeysin 阅读(118) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。思路:回溯法,排列树。由于字符有 阅读全文
posted @ 2017-12-26 11:37 jeysin 阅读(90) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向 思路:基于中序遍历方法,用一个指针始终指向双向链表的最后一个节点,转换完以后即指向双向链表的最后一个节点 1 class Solution { 2 public: 3 void 阅读全文
posted @ 2017-12-26 09:29 jeysin 阅读(128) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路:N'连接在N的后面,可以以O(n)的时间复制特殊指针的指向,再将两个 阅读全文
posted @ 2017-12-25 11:58 jeysin 阅读(108) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径 思路:回溯法 1 class Solution { 2 public: 3 void DFS(TreeNode *root, vector<vecto 阅读全文
posted @ 2017-12-25 10:46 jeysin 阅读(149) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路:序列的最后一个节点是根节点,找分界点,分为左右子树,递归。 1 class Solution { 2 public: 3 int getMid( 阅读全文
posted @ 2017-12-25 10:26 jeysin 阅读(136) 评论(0) 推荐(0) 编辑
摘要:题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印 思路:广度优先遍历 1 class Solution { 2 public: 3 vector<int> PrintFromTopToBottom(TreeNode* root) { 4 vector<int> res; 5 if(ro 阅读全文
posted @ 2017-12-25 10:00 jeysin 阅读(149) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是 阅读全文
posted @ 2017-12-25 09:53 jeysin 阅读(90) 评论(0) 推荐(0) 编辑
摘要:题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数 思路:用一个辅助栈动态维护最小值 1 class Solution { 2 public: 3 void push(int value) { 4 sta1.push(value); 5 if(sta2.size()==0 阅读全文
posted @ 2017-12-23 18:09 jeysin 阅读(116) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路:由外向里,按圈打印,考 阅读全文
posted @ 2017-12-23 17:41 jeysin 阅读(162) 评论(0) 推荐(0) 编辑
摘要:题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 思路:前序遍历和前序对称遍历,考虑NULL节点,遍历结果一样,则为对称二叉树。 1 bool isSame(TreeNode *pRoot1, TreeNode *pRoot2) 阅读全文
posted @ 2017-12-23 16:18 jeysin 阅读(154) 评论(0) 推荐(0) 编辑
摘要:题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5思路:遍历交换左右节点 class Solution { public: void 阅读全文
posted @ 2017-12-23 15:46 jeysin 阅读(134) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 思路:两个递归函数,一个负责遍历树A;另一个负责判断由树A中某一个节点作为根节点的子树是否和树B结构一样 1 bool isSubTree(TreeNode *pRoot1, TreeNode *p 阅读全文
posted @ 2017-12-23 15:14 jeysin 阅读(142) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则 解法1:非递归解法 1 ListNode* Merge(ListNode* pHead1, ListNode* pHead2) 2 { 3 if(pHead1==NULL)return pHead2 阅读全文
posted @ 2017-12-23 11:18 jeysin 阅读(81) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个链表,反转链表后,输出链表的所有元素。 思路:三个指针,遍历反转 1 ListNode* ReverseList(ListNode* pHead) 2 { 3 if(pHead==NULL)return NULL; 4 ListNode *p1=pHead->next; 5 pHe 阅读全文
posted @ 2017-12-23 10:43 jeysin 阅读(131) 评论(0) 推荐(0) 编辑
摘要:题目描述 一个链表中包含环,请找出该链表的环的入口结点 解法1:环的入口节点一定是入度为2的节点,故遍历链表,统计节点入度数,入度为2即为环入口节点 class Solution { public: ListNode* EntryNodeOfLoop(ListNode* pHead) { ListN 阅读全文
posted @ 2017-12-23 10:19 jeysin 阅读(210) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个链表,输出该链表中倒数第k个结点。 ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if(pListHead==NULL || k==0)return NULL; ListNode *p=pListHea 阅读全文
posted @ 2017-12-22 22:57 jeysin 阅读(167) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分。 思路:不考虑奇数与偶数的数字相对顺序的话,可以实现O(n)的时间复杂度,O(1)的空间复杂度 1 void AdjustArr(int *arr, int leng 阅读全文
posted @ 2017-12-22 21:49 jeysin 阅读(130) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路:要保持奇数和偶数的相对位置不变并且达到O(n)的时间复杂度的话,必须要用O(n)的辅助空间。 1 class 阅读全文
posted @ 2017-12-22 21:32 jeysin 阅读(467) 评论(0) 推荐(0) 编辑
摘要:题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 思路:小数点或者前面有一个整型,或者后面 阅读全文
posted @ 2017-12-22 20:59 jeysin 阅读(135) 评论(0) 推荐(0) 编辑
摘要:题目描述 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均 阅读全文
posted @ 2017-12-22 16:31 jeysin 阅读(164) 评论(0) 推荐(0) 编辑
摘要:题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路:两个指针一前一后,遍历找重复节点,特殊情况考虑重复的节点是头节点 class Solution { publi 阅读全文
posted @ 2017-12-22 11:56 jeysin 阅读(101) 评论(0) 推荐(0) 编辑
摘要:思路:两种解法,一种当做大数问题处理,大数加法,进位;另一种当做排列问题处理,递归。 阅读全文
posted @ 2017-12-22 10:38 jeysin 阅读(119) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路:考虑特殊情况,0的0次方,0的负数次方;利用递归,时间复杂度为O(logn)的解法,提高次方计算的效率;利用位运算来判断奇偶,提高效率 class Solution { p 阅读全文
posted @ 2017-12-22 10:09 jeysin 阅读(89) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路:n&(n-1)可将n的二进制中最后一个1变为0 class Solution { public: int NumberOf1(int n) { int count=0; while(n) { n=n&(n-1); ++ 阅读全文
posted @ 2017-12-21 16:56 jeysin 阅读(91) 评论(0) 推荐(0) 编辑
摘要:题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+ 阅读全文
posted @ 2017-12-21 15:21 jeysin 阅读(105) 评论(0) 推荐(0) 编辑
摘要:题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵 阅读全文
posted @ 2017-12-21 12:11 jeysin 阅读(147) 评论(0) 推荐(0) 编辑
摘要:题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0 思路:二分法 阅读全文
posted @ 2017-12-21 10:32 jeysin 阅读(122) 评论(0) 推荐(0) 编辑
摘要:1.直接插入排序 2.希尔排序 3.简单选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 8.基数排序 总结 阅读全文
posted @ 2017-12-19 23:13 jeysin 阅读(187) 评论(0) 推荐(0) 编辑
摘要:思路:每次push的时候,选择非空的队列push,如果两个队列都空,任选一个;pop的时候,将队列前n-1个元素转移到另一个队列,再pop第n个(最后一个)元素。每次操作后都保持至少有一个队列是空的。 阅读全文
posted @ 2017-12-19 17:35 jeysin 阅读(86) 评论(0) 推荐(0) 编辑
摘要:题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型 思路:push的时候统一push到stack1中;pop的时候先判断stack2是否为空,如果为空,将stack1元素全部出栈,push到stack2中,再从stack2中pop class Solutio 阅读全文
posted @ 2017-12-19 14:25 jeysin 阅读(92) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回 思路:前序遍历的第一个为根节点,在中序遍历中查找根节点 阅读全文
posted @ 2017-12-19 14:09 jeysin 阅读(92) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个链表,从尾到头打印链表每个节点的值 class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> res; vector<int> stack; while(he 阅读全文
posted @ 2017-12-19 13:30 jeysin 阅读(83) 评论(0) 推荐(0) 编辑
摘要:题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy 思路:先计算有多少个空格,要准备多少空间,再从后往前替换(保证输入的字符串后面有足够多的空间) class Solution { pub 阅读全文
posted @ 2017-12-19 13:19 jeysin 阅读(110) 评论(0) 推荐(0) 编辑
摘要:题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 思路:从右至左,从上至下,不断缩小范围比较 阅读全文
posted @ 2017-12-19 09:48 jeysin 阅读(128) 评论(0) 推荐(0) 编辑
摘要:前几天刚做完一个搜索引擎的项目,趁着今天有时间,把做这个项目的一些关键点,包括一些关键的算法、思路都整理一下,做一个总结,方便日后温习,也方便以后对这个项目的扩展(PS:博客园上的第一篇博客,排版可能不是太好,大家将就一下),废话不多说,先上源码:https://github.com/Jeysin/ 阅读全文
posted @ 2017-12-15 14:00 jeysin 阅读(2169) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示