算法
文章平均质量分 52
wangdongli_1993
这个作者很懒,什么都没留下…
展开
-
利用二分查找找到反转数组的最小值
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 分析:反转以后两部分的数组是各自排好序的,且前半部分值都大于后半部分的值 最小元素刚好是这两部分子数...原创 2018-07-18 21:24:59 · 1340 阅读 · 0 评论 -
素数伴侣(二分图最大匹配问题&匈牙利算法)
题目描述题目描述若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最...原创 2018-08-22 12:32:02 · 1384 阅读 · 0 评论 -
扑克牌顺子(利用栈)
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K...原创 2018-08-26 16:29:25 · 222 阅读 · 0 评论 -
求1+2+3+...+n(巧用递归)
题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。public class Solution { public int Sum_Solution(int n) { int sum=n; boolean ans=(n>0 && (...原创 2018-08-26 17:35:16 · 2919 阅读 · 0 评论 -
把字符串转换成整数(char与int的转换)
题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0 num+=(ch[i]-48)*(int)M...原创 2018-08-26 20:44:33 · 2743 阅读 · 0 评论 -
堆排序以及TopK问题
堆排序利用数组来实现堆,堆分为小顶堆和大顶堆小顶堆:父亲节点的值小于左右孩子节点大顶堆:父亲节点的值大于左右孩子节点 如果是对数组从小到大排序(1)为数组构建一个初始大顶堆,则数组的第一个元素就是数组最大的元素(2)循环N-1一次,每次把数组的最后一个元素与数组第一个元素交换,然后数组长度从后减1,再对新的数组重复第一步,然后在重复第二步,知道数组的长度为1pack...原创 2018-08-27 16:06:47 · 1863 阅读 · 0 评论 -
孩子们的游戏(圆圈中最后剩下的数)
题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去.....原创 2018-08-28 15:02:20 · 148 阅读 · 0 评论 -
数组中重复的数字(利用hash数组)
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 因为数组中的元素都是0到n-1的,所以数组的值可以作为数组的下标,hash数组原始都为为,遍历原数组,...原创 2018-08-28 15:48:03 · 1776 阅读 · 0 评论 -
构建乘积数组
题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 刚好分成两部分求解public class Solution { public int[] multiply(int[] A) { ...原创 2018-08-28 16:55:26 · 245 阅读 · 0 评论 -
矩阵中的路径(回溯法)
题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字...原创 2018-08-31 14:54:44 · 751 阅读 · 0 评论 -
进制转换(Integer.parseInt(num.int radix))
题目描述写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )输入描述:输入一个十六进制的数值字符串。输出描述:输出该数值的十进制字符串。示例1输入0xA输出10 (1)利用Integer自带的进制转换方法实现package xidian.lili.huawei;import java.util.Scanne...原创 2018-08-21 17:10:17 · 2048 阅读 · 0 评论 -
质数因子(递归)
题目描述功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )最后一个数后面也要有空格输入描述:输入一个long型整数输出描述:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。示例1输入180输出2 2 3 3 5 (1)递归不会超时package xidia...原创 2018-08-21 20:41:30 · 821 阅读 · 0 评论 -
取近似值(Math.round和folat-(int)float)
题目描述写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。输入描述:输入一个正浮点数值输出描述:输出该数值的近似整数值示例1输入5.5输出6 应用的知识点: 可以借助Math.round()方法实现四舍五入 自己实现 小数强转整数,直接截尾int和float类...原创 2018-08-21 22:11:51 · 1320 阅读 · 0 评论 -
提取不重复的整数(LinkedHashMap)
题目描述输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。输入描述:输入一个int型整数输出描述:按照从右向左的阅读顺序,返回一个不含重复数字的新的整数示例1输入9876673输出37689 利用set的没有重复值可以去重,但是set是无序的,遍历set的时候,输出顺序不一定,所以借助实现类LinkedHashSet,使用...原创 2018-08-21 22:17:57 · 583 阅读 · 0 评论 -
多线程(ReetrantLock搭配condition)
题目描述问题描述:有4个线程和1个公共的字符数组。线程1的功能就是向数组输出A,线程2的功能就是向字符输出B,线程3的功能就是向数组输出C,线程4的功能就是向数组输出D。要求按顺序向数组赋值ABCDABCDABCD,ABCD的个数由线程函数1的参数指定。[注:C语言选手可使用WINDOWS SDK库函数]接口说明:void init(); //初始化函数void Release(); ...原创 2018-08-22 10:25:21 · 308 阅读 · 0 评论 -
连续子数组的最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序...原创 2018-08-08 17:33:56 · 214 阅读 · 0 评论 -
最小的K个数
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 (1)利用java api,对数组排序,选择前k个import java.util.ArrayList;import java.util.Arrays;public class Solution { public ArrayList<I...原创 2018-08-08 17:06:12 · 140 阅读 · 0 评论 -
斐波那契数列应用
题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。分析:根据斐波那契数列定义可以使用递归 Fibonacci(int n)=Fibonacci(int n-1)+Fibonacci(int n-2)Fibonacci(0)==0Fibonacci(1)==1 n<=39 题目描述:一只青蛙一...原创 2018-07-18 23:11:41 · 3860 阅读 · 0 评论 -
经典排序算法比较及java实现
排序稳定性的含义:如果排序算法能够保留数组中重复元素的的相对位置则可以被称为是稳定的,比如我们要根据两个键对数据进行排序,按照第一个主要键排好序之后,再对第二个键排序,这个时候排序算法的稳定性就非常重要常见的稳定的排序有冒泡排序 插入排序 归并排序不稳定的排序有选择排序 希尔排序 快速排序 三向快速排序 和堆排序 冒泡排序 冒泡排序每次都是比较相邻的两个元素,若这两个相邻的元素...原创 2018-07-21 15:42:18 · 132 阅读 · 0 评论 -
把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。package xidian.lili.niuke;import java.util.ArrayList;import java.util.Collections;import java.util....原创 2018-08-09 08:12:07 · 105 阅读 · 0 评论 -
丑数
题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。package xidian.lili.niuke;import java.util.ArrayList;public class GetUglyNumber { public stati...原创 2018-08-09 08:49:49 · 116 阅读 · 0 评论 -
第一个只出现一次的字符
题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).package xidian.lili.niuke;import java.util.HashMap;import java.util.Set;public class FirstNoRepeatingChar...原创 2018-08-09 09:25:27 · 100 阅读 · 0 评论 -
数字在排序数组中出现的次数(查找数字+/-0.5出现的下标做差)
题目描述统计一个数字在排序数组中出现的次数。有序数组的查找利用二分查找,可以查找k第一次出现的小标和最后一次出现的下标,做差。就是k在数组中出现的次数package xidian.lili.niuke;public class Solution { public static int GetNumberOfK(int [] array , int k) { //...原创 2018-08-09 13:03:52 · 165 阅读 · 0 评论 -
和为S的连续正数序列(根据等差数列求和公式)
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数...原创 2018-08-09 17:38:55 · 364 阅读 · 0 评论 -
[编程题] 牛牛找工作(TreeMap的(map.floorKey(p),返回小于等于p的最大key)
时间限制:2秒空间限制:65536K为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。 输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含两个正...原创 2018-08-10 14:19:29 · 1622 阅读 · 0 评论 -
[编程题]矩形重叠
链接:https://www.nowcoder.com/questionTerminal/d17cf8815a0745f5bbe856eee123cd24来源:牛客网 平面内有n个矩形, 第i个矩形的左下角坐标为(x1[i], y1[i]), 右上角坐标为(x2[i], y2[i])。如果两个或者多个矩形有公共区域则认为它们是相互重叠的(不考虑边界和角落)。请你计算出平面内重叠矩形...原创 2018-08-11 10:00:20 · 863 阅读 · 0 评论 -
顺时针打印矩阵
时间限制:1秒 空间限制:32768K 热度指数:294985本题知识点: 数组题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.package xidi...原创 2018-08-07 11:16:02 · 106 阅读 · 0 评论 -
和为S的两个数字(递增数列左右两个指针移动)
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。(1)用和减去指定的一个数字,得到另一个数字,用二分查找看数列中存在这个数字import java.util.ArrayList;import java.util.Collections...原创 2018-08-12 09:59:00 · 279 阅读 · 0 评论 -
数组中出现次数超过一半的数字(HashMap分拣存储)
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。package xidian.lili.niuke;import java.util.HashMap;import java.util.Set;public cl...原创 2018-08-08 16:15:02 · 204 阅读 · 0 评论 -
字符串的排列(回溯递归)
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。import java.util.ArrayList;import java.util.Collections;p...原创 2018-08-08 16:23:12 · 248 阅读 · 0 评论 -
字串的连接最长路径查找(Scanner.next()和Scanner.nextLine())
题目描述给定n个字符串,请对n个字符串按照字典序排列。输入描述:输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。输出描述:数据输出n行,输出结果为按照字典序排列的字符串。示例1输入9captocatcardtwotooupboatboot输出boatbootcap...原创 2018-08-21 23:00:07 · 170 阅读 · 0 评论