算法基础
Kevin-Cai
你发誓要用代码写下整个世界,我保证看着你把世界写完
展开
-
字符串的旋转
问题:给定一字符串,要求将字符串前面的若干个字符移到字符串的尾部,例如:将"abcdef"的前三个字符串移动到尾部变成”defabc“解决方法:一、蛮力移位思路:直接一位一位的往后移动 :abcdef ->bcdefa ->cdefab ->defabc复杂度分析:对长度为n的字符串来说,假设需要移动m个字符到字符串尾部,那么总共需要m*n次操作,同时设立一个变量保存第原创 2015-11-08 11:48:27 · 428 阅读 · 0 评论 -
Single Number
异或,一种有趣又不常用的语法。哈哈哈原创 2017-02-08 23:53:06 · 385 阅读 · 0 评论 -
网易的一道面试题
在一个N*N的数组中寻找所有横,竖,左上到右下,右上到左下,四种方向的直线连续D个数字的和里面最大的值原创 2017-03-05 13:40:21 · 1704 阅读 · 0 评论 -
10进制N进制
题目需求:将一个十进制数值转换为任意N进制的数。(不考虑大数的问题)原创 2017-05-19 17:48:38 · 473 阅读 · 0 评论 -
二叉树的四种遍历方式
二叉树的四种遍历方式:前中后序和层次遍历原创 2017-07-17 17:39:48 · 2494 阅读 · 0 评论 -
快速排序
快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。转载 2017-02-09 00:26:37 · 410 阅读 · 0 评论 -
动态规划
动态规划经典题目原创 2017-09-30 22:33:45 · 393 阅读 · 0 评论 -
求柱状图最大面积
给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。原创 2017-09-30 23:49:18 · 1425 阅读 · 0 评论 -
二分查找
二分查找算法(JAVA实现)原创 2017-07-26 14:31:49 · 289 阅读 · 0 评论 -
Maximum Subarray
最大子阵列题原创 2017-02-08 21:32:33 · 205 阅读 · 0 评论 -
Length of Last Word
题目要求: 在给定字符串中找出最后一个word的长度,word指被空格符“ ”截断的部分。原创 2017-02-07 21:52:04 · 195 阅读 · 0 评论 -
字符串的全排列
题目:输入一个字符串,打印出该字符串中字符的所有排序。例如;输入字符串abc,输出由字符串'a'、'b'、'c'所能排列出来的所有字符串"abc","acb","bac","bca","cab","cba".思路:从字符串中选出一个字符为排头然后对后面字符做全排列。步骤:将a固定在第一位,求后面bc的排列将b固定在第一位,求后面ac的排列将c固定在第一位,求后面ab的排原创 2015-11-15 13:56:57 · 633 阅读 · 0 评论 -
最长公共子序列
问题: 求两个字符串的最大公共子序列。最长公共子串(Longest Common Substirng)和最长公共子序列(Longest Common Subsequence,LCS)的区别:子串是串的一个连续的部分,子序列则是从不改变序列的顺序,而从序列中去掉任意的元素而获得新的序列;也就是说,子串中字符的位置必须是连续的,子序列则可以不必连续。原创 2015-11-16 15:37:23 · 388 阅读 · 0 评论 -
Palindrome Number
该题是要求判断给定的数字是否为回文。 下面是一种解题思路: 将int 类型的 x转换为String 类型再做出判断。(下面可以优化到判断ipublic class Solution { public boolean isPalindrome(int x) { String s = String.valueOf(x); for (int i = 0; i < s原创 2017-02-04 13:40:01 · 205 阅读 · 0 评论 -
Add Two Numbers
题目要求我们模拟大数加法 注意点: 1.因为存储是反过来的,即数字342存成2->4->3,所以要注意进位是向后的; 2.链表l1或l2为空时,直接返回,这是边界条件,省掉多余的操作; 3.链表l1和l2长度可能不同,因此要注意处理某个链表剩余的高位; 4.2个数相加,可能会产生最高位的进位,因此要注意在完成以上1-3的操作后,判断进位是否为0,不为0则需要增加结点存储最高位的进位。 解原创 2017-02-04 19:03:03 · 334 阅读 · 0 评论 -
Longest Substring Without Repeating Characters
题目要求我们得出不含重复元素子串的最大长度。 解题思路: 一开始使用暴力破解法(两遍for循环),结果直接TimeLimit .后面查看官方答案,感到柳暗花明。代码解释: 首先,定义了一个256大小的int数组map,用于对应于256位ASCII码,接下来,在for循环中用了一个while语句,j从0开始依次往后渐增,当s.charAt[j]是第一次出现,便将map[s.charAt(j)]赋原创 2017-02-04 23:22:28 · 256 阅读 · 0 评论 -
Valid Parentheses
题目要求我们判断给定字符串s中所包含的三种括号形式是否合理。 合理的形式:() , ()[]{} ,{()}等。 不合理形式:({)} ,([)]等。解题思路: 用堆栈的方式,碰到左半边括号就入栈,右半边括号判断栈顶元素是否跟当前括号对应。如果对应就将栈顶元素做出栈处理。否则直接return false.所有元素遍历之后判断栈是否为空。为空return true,否则return false.原创 2017-02-05 18:23:03 · 262 阅读 · 0 评论 -
Longest Common Prefix
Longest Common Prefix题目要求:求所有字符串的最长公共前缀,即数组的所有字符串都包含这个前缀。原创 2017-02-06 21:20:16 · 302 阅读 · 0 评论 -
Implement strStr()
在字符串haystack中找寻字符串needle第一次出现的位置。不符合要求则返回-1.原创 2017-02-07 20:08:00 · 305 阅读 · 0 评论 -
链表相关面试题
使用插入排序对链表进行排序(Sort a linked list using insertion sort.):istNode toInsert = head原创 2017-10-03 13:29:14 · 284 阅读 · 0 评论