举例如下:'9235','42','9','5','8','32','136','343','45' 则拼接的最大的数为 : 9-9235-8-5-45-42-343-32-136 网上坑多,想了很久, 思路: 1.数组从小到大排序: 2.顺位比较,从第一位开始,大的在前(冒泡法): 关键是交换元素的条件,有点绕! <?php $array = array('9235','42','9','5','8','32','136','343','45'); //$array = array('3','…
首先讲一个最笨的算法:时间复杂度为N  空间复杂度为N 代码如下:输出结果id=3完全正确: int[] a = new int[] { 1, 1, 2, 2, 3, 4, 4 }; Dictionary<int, int> dic = new Dictionary<int, int>() { }; for (int i = 0; i < a.Length; i++) { if(dic.Keys.Contains(a[i])) { dic[a[i]]++; } else {…
题目描述: 如果用字母n来代表一个整数,阶乘代表着所有小于或等于n的整数的乘积.阶乘通常简写成 n!例如: 5! = 1 * 2 * 3 * 4 * 5 = 120. 算法: function factorialize(num) { // 请把你的代码写在这里 var result = 1; for(var i=2;i <= num;i++){ result *= i; } return result; } factorialize(1);…
形如:int [] nums = {7,2,8,9,1,12}; 解一:两两比较并记录下标,下次比较拿上次比较的最大值和上次比较的下一个进行比较,循环一次找出最大值 /** * @author 马向峰 比较一遍找出最大值 * @param arr * @return */ private static int getMaxNum(int[] arr) { // 记录下标 int index = 0; // 假设第一个为最大值 int max = arr[0]; for (int i = inde…
找出最大值和最小值 题目要求 输入n个数,n<=100,找到其中最小的数和最大的数 实现代码 using System; namespace _1.求最大最小 { class Program { public static int GetMax(int[] numbers) { int max = numbers[0]; for (int i = 0; i < numbers.Length; i++) { if (max < numbers[i]) { max = numbers[i];…
曾经看到有这样一个JS题:有一组数字,从1到n,从中减少了3个数,顺序也被打乱,放在一个n-3的数组里请找出丢失的数字,最好能有程序,最好算法比较快假设n=10000 下面我也来贴一个算法. function getArray (){ //创建随机丢失3个数字的数组,并打乱顺序. var arr =[] for(var i=1;i<=10000;i++){ arr.push(i); } var a = arr.splice(Math.floor(Math.random()*arr.length)…
51nod图论题解(4级,5级算法题) 1805 小树 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 她发现她的树的点上都有一个标号(从1到n),这些树都在空中飘浮不在土地上生根,然而每天她的这些树会变化一个形态,这使得她很恼火,她想弄清楚到底有多少种形态. 特殊的是这些树的叶子(度数为1)数目是不变的. 由于数目可能很大,她只要它模(1,000,000,007)就可以了. n=3,m=2时有3种方案:1-2-3, 2-3-1,3-1-2. 3-1-2和…
昨天面试被问到这道算法题,一时没有回答上来,今天思考了一下,参阅了网上的教程,做了一个JAVA版本的实现. 方案一: 新建一个N*L的数组,将原始数组拼接存放在这个大数组中,再调用Arrays.sort()进行排序,或者使用其它排序方法即可. 此方法时间复杂度为o(N*Llog2N*L); 具体代码实现如下: import java.util.Arrays; class Solution { public static int[] MergeArrays(int[][] array) { int…
众所周知,很多社区都是有内容审核机制的,除了第一次发布,后续的修改也需要审核,最粗暴的方式当然是从头再看一遍,但是编辑肯定想弄死你,显然这样效率比较低,比如就改了一个错别字,再看几遍可能也看不出来,所以如果能知道每次都修改了些什么,就像git的diff一样,那就方便很多了,本文就来简单实现一个. 求最长公共子序列 想要知道两段文本有什么差异,我们可以先求出它们的公共内容,剩下的就是被删除或新增的.在算法中,这是一道经典的题目,力扣上就有这道题1143. 最长公共子序列,题目描述如下: 这种求最值…
出题:数组中有一个数字出现的次数超过了数组长度的一半,请找出这个数字: 分析: 解法1:首先对数组进行排序,时间复杂度为O(NlogN),由于有一个数字出现次数超过了数组的一半,所以如果二分数组的话,划分元素肯定就是这个数字: 解法2:首先创建1/2数组大小的Hash Table(哈希表可以替代排序时间,由于一个数字出现超过了数组的一半,所以不同元素个数肯定不大于数组的一半),空间复杂度O(N),顺序扫描映射数 组元素到Hash Table中并计数,最后顺序扫描Hash Table,计数超过数组…