
算法
木工当道
我喜欢魅族M3,你呢
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
京东2017实习生Java.md
大意为: 警察抓小偷。X为小偷,#为行人,数字代表警察可抓取的范围。输入实例 9 X1X#2X#XX注意边界条件,和字符型转换位数字 。import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in);原创 2017-04-07 21:52:34 · 387 阅读 · 0 评论 -
剑指offer_和为S 的两个数字
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述:对应每个测试案例,输出两个数,小的先输出。解题思路使用两个数组指针,初始位置为数组首尾i,j。array[0],array[length-1]。若指针所指和大于sum,左移(缩小)数字j;若指针所指和小于sum,右移(放大)数字iJava实现imp原创 2017-06-06 10:39:49 · 188 阅读 · 0 评论 -
剑指offer_扑克牌顺子
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…..LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的原创 2017-06-06 16:01:54 · 191 阅读 · 0 评论 -
剑指offer_丑数
算法思路利用DP动态规划思想,空间换时间 每一个丑数都是由前一个丑数的 乘积得到(*2,*3,*5)中的最小值。按顺序把每个丑数放在数组中,求下一个丑数原创 2017-06-02 16:52:17 · 199 阅读 · 0 评论 -
剑指offer_第一个只出现一次的字符
题目描述在字符串中找到第一个只出现一次的字符,如输入”google”, 则输出’l’。解题思路使用hash表结构,因为ASC字符共有256位,建立hashTable[256]。第一次遍历字符串,计算当前字符应当在hashTable[256]中的位置,并且从0开始自增相应位置的数据。第二次遍历,找到第一个只有单个字符的位置。Java实现public class Solution { p原创 2017-06-02 18:21:06 · 194 阅读 · 0 评论 -
<未完成状态>剑指offer_圆圈中最后剩下的数字(约瑟夫问题)
题目描述题目:0, 1, ···, n-1 共n个数字排成圆圈,从数字0 开始每次从这个圈中删除第m个数字。求这个圆圈中最后剩下的数字。基础解题思路时间复杂度o(n),空间复杂度o(1)设f(n为初始有n人時最後一個剩余的人的编号,那么有如下递归关系: f(n) = (f(n-1) + m) mod n递归关系的推导: 在n个数字中,第一个被删除的数字为(m-1) mod n,并将其记为k,原创 2017-06-07 00:00:34 · 187 阅读 · 0 评论 -
剑指offer_求1+2+3+...+n
题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解题思路常规解法是依据公式n(n+1)/2 和循环、递归两种思想。本文继续使用递归调用思想,递归退出条件利用 逻辑与 (&&)的短路特性实现递归终止。原创 2017-06-07 15:57:22 · 184 阅读 · 0 评论 -
剑指offer_不用加减乘除做加法
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。原创 2017-06-07 17:33:01 · 240 阅读 · 0 评论 -
剑指offer_把字符串转换成整数
题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0解题思路需要注意的边界数据上下界溢出空字符串只有正负号有无正负号错误标志输出原创 2017-06-07 21:42:19 · 217 阅读 · 0 评论 -
剑指offer_数组中的逆序对
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入例子: 1,2,3,4,5,6,7,0 输出例子: 7原创 2017-06-04 13:45:59 · 151 阅读 · 0 评论 -
OFDM 中的 IFFT/FFT 注意事项
在做 OFDM 项目时,发现一个容易犯错的地方:IFFT/FFT。在很多介绍 OFDM 的书中,给出结论:在发射机,基带信号的复包络采用值正好是待发射序列的 IDFT,所以在 N 是 2 的指数时,可以采用 IFFT 来快速计算;在接收机,将接收的频带信号解调到基带,采样得到基带复包络,然后做 DFT (FFT) 即可得到原始的发射序列。这个结论是正确的,但是需要注意的一点是:调制/解调所做的运算的原创 2017-06-14 19:07:39 · 16944 阅读 · 2 评论 -
LeetCode - 2 -Add Two Numbers
两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。原创 2017-07-08 14:29:19 · 231 阅读 · 0 评论 -
LeetCode - 3 -Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters原创 2017-07-08 15:15:09 · 211 阅读 · 0 评论 -
网易内推2017最长01子串
import java.util.Scanner;/** * Created by Administrator on 2017/8/12. * 如果一个01串任意两个相邻位置的字符都不一样,称为01串 * 输出最长的子串长度 * 解法:最笨的o(n^2); */public class wangyiFirst { public static void main(String[]原创 2017-08-12 17:04:40 · 1613 阅读 · 0 评论 -
质数因子
题目描述详细描述输入描述java实现与解释题目描述功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 ) 最后一个数后面也要有空格详细描述:函数接口说明: public String getResult(long ulDataInput) 输入参数: long ulDataInput:输入的正整数 返回值: String输入描述:原创 2017-08-05 22:05:10 · 334 阅读 · 0 评论 -
滴滴秋招笔试第二题
import java.util.ArrayList;import java.util.List;import java.util.Scanner;/** * Created by Administrator on 2017/8/26. */public class didi02 { public static void main(String[] args) {原创 2017-09-01 14:10:00 · 364 阅读 · 0 评论 -
剑指offer_左旋转字符串
题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!解题思路三次旋转操作第一次整体旋转,即将XYZdefabc转换为cbafedZYX.第二、三次分别原创 2017-06-05 23:50:45 · 207 阅读 · 0 评论 -
剑指offer_和为S的连续正整数
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? 输出描述:输出所有和为S的连续正数序列。翻译 2017-06-05 22:33:13 · 220 阅读 · 0 评论 -
剑指offer_数字在排序数组中出现的次数
题目描述统计一个数字在排序数组中出现的次数。解题思路排序数组中查找,利用二分查找改进二分查找,计算k值起始位和结束位 lastK - firstK + 1原创 2017-06-05 11:02:54 · 186 阅读 · 0 评论 -
剑指offer_连续子数组的最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少原创 2017-05-31 17:04:10 · 213 阅读 · 0 评论 -
剑指offer_二叉树深度 及 是否为平衡二叉树
题目描述判断二叉树的深度及 是否为平衡二叉树 平衡二叉树:任意结点的左右子树的深度相差不超过1,那么就是平衡二叉树。解题思路-使用二叉树深度的公式计算每个结点的深度值 -利用后续遍历,遍历二叉树每一个结点。在遍历的同时记录他的深度,就可以在遍历的同时判断每个结点是不是平衡的。原创 2017-06-05 14:14:41 · 228 阅读 · 0 评论 -
字典序回溯算法.md
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。算法分析(Java版本)import java.util.ArrayList;import java.util.HashSet;import java.util.Collections;public class So原创 2017-06-16 14:08:36 · 411 阅读 · 0 评论 -
字符串的排列_牛客网
记得全排列这种写法还是在学校图书馆看到的,回溯法中,当初理解了好久。import java.util.*;public class Solution { public ArrayList<String> Permutation(String str) { ArrayList<String> re = new ArrayList<String>(); if (转载 2017-06-16 14:10:12 · 297 阅读 · 0 评论 -
LeetCode - 32 -Longest Valid Parentheses.md
Longest Valid Parentheses题目Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest valid (well-formed) parentheses substring.For “(()”, the longest valid parentheses s原创 2017-06-16 14:10:35 · 204 阅读 · 0 评论 -
非递归二叉树操作.md
使用单栈进行二叉树非递归操作。 具体的Java版本代码为:protected static void nonIterativePreorder(Node p) { Stack<Node> stack = new Stack<Node>(); Node node = p; while (node != null || stack.size() > 0)原创 2017-06-16 14:10:58 · 214 阅读 · 0 评论 -
LeetCode - 65 - Valid Number.md
感谢@balint 提高思路问题Validate if a given string is numeric. Some examples: “0” => true ” 0.1 ” => true “abc” => false “1 a” => false “2e10” => true问题思路利用四个flag 标定不同的情况组合,pointSeen eSeen numberSeen n原创 2017-06-16 14:11:23 · 317 阅读 · 0 评论 -
领先投票.md
投票问题如果一个选举有p 个人投A 的票,q 个人投B 的票,p > q,那么,在整个投票过程中A 的票累计数一直严格多于B 的票累计数的概率? (p-q)/(p+q)分析一个投票次序如果A 的选票累计数从头到尾都一直严格领先于B 的选票累计数,我们就把它叫做有利次序,否则叫无利次序。显然,凡是以B 票开始的次序都是无利 次序。在以A 票开始的次序中,也有一些是无利次序。怎么来数这些无利次序呢?原创 2017-06-16 14:12:25 · 403 阅读 · 0 评论 -
深度优先搜索和广度优先搜索.md
深度优先搜索算法深度优先的要点深度搜索Java实现深度优先搜索可处理问题寻找路径深度优先搜索算法深度优先的要点在搜索一幅图时,只需要用一个递归来遍历所以顶点。在经过每个顶点的同时: - 将它标记为已访问 - 递归访问所有未标记的邻居节点深度搜索Java实现public class DepthFirstSearch{ private boolen[] marked; //原创 2017-06-16 14:12:49 · 268 阅读 · 0 评论 -
排序算法.md
初级排序算法 游戏规则 关注对象是重新排列数组元素的算法。大多数情况只会两种方法操作数据:less()、exch().排序成本模型:需要计算比较和交换的数量。对不交换的算法,会计算访问数组的次数。自定义的数据类型,只需要实现一个compareTo() 方法来定义目标类型对象的自然序列。通常对于> < = ,返回值用(-1 0 +1)。排序分类 选择排序简单选择排序 每次选原创 2017-06-16 14:14:19 · 332 阅读 · 0 评论 -
快速排序.md
基本算法思想快速排序是一种分治算法,同‘归并排序’思想相同,呈互补。将数组切分(partition)为两部分,对独立两部分进行排序。归并排序是对数组等分切割后,将有序子序列归并得到有序数组;快速排序是安装数组的内容决定切分位置后,两个子数组有序后整个数组也有序。特点原地排序(仅需要很小的辅助栈)长度为 N的数组排序时间和 NlgN成正比内循环比大多数排序要短快速实现算法public clas原创 2017-06-16 14:14:45 · 227 阅读 · 0 评论 -
最多字符串.md
这个题目不是编程珠玑上看到的,但是解法用到的数据结构在编程珠玑上有讲到,先归类到这里。 求一个字符串中连续出现的次数最多的子串。例如字符串“abababc”,最多连续出现的为ab,连续出现三次。要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复子串为abab。两个题目的解法有些类似,都用到了后缀数组这个数据结构。求一个字符串中连续出现的次数最多的子串,首先生成后缀数组例如上转载 2017-06-16 14:15:32 · 320 阅读 · 0 评论 -
散列表.md
散列表散列函数基于拉链法的散列表基于线性探测法的散列表散列表目的:如果所有的键都是小整数,可以用一个数组来实现无序的符号表,将键作为数组的索引而数组中键i处存储的就是它对应的值。查找算法步骤 用散列函数将查找的函数转化为数组的一个索引。理想情况下,不同的减可以转换为不同的索引值。处理碰撞冲突,分为拉链法和线性探测法。散列表是算法在时间和空间上的均衡处理方式。散列函数散列函数特点原创 2017-06-16 14:16:13 · 376 阅读 · 0 评论 -
无向图.md
术语表无向图的数据类型和常用代码Graph图的数据结构图是有一组顶点和一组能将两个顶点连接的边组成。自环:一条连接一个顶点和自身的边。平行边:连接同一对顶点的两条边。术语表两个顶点通过一条边相连,两个顶点相邻。顶点的度为依附于它的总边数互不相邻的树组成的集合称为生成树森林无向图的数据类型和常用代码计算V的度数public static int degree(Graph G, i原创 2017-06-16 14:16:42 · 439 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。Java实现import java.util.ArrayList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = n原创 2017-09-26 23:49:00 · 337 阅读 · 1 评论