
算法
一些基础算法的解题思路
进阶的枸杞茶
这个作者很懒,什么都没留下…
展开
-
java实现给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数
java实现给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数示例1:输入:[9, 99, 9, 53, 564, 34, 5, 94, 56]输出:9999945656455334示例2:输入:[30,30304,304,303]输出:3043033030430示例3:输入:[0,0,0]输出:0思路分析:1.多个数组成最大数,可以看成一种特殊的冒泡排序,通过比较把...原创 2020-02-28 16:15:46 · 3927 阅读 · 0 评论 -
java实现合并多个线段,计算多个线段的实际覆盖长度
算法: 计算多个线段实际覆盖的长度。例如:线段组1:{{1, 2}, {2, 3}, {3, 5}, {4, 10.5}, {11, 13}}的长度为[1,10.5],[11,13]的长度为11.5;线段组2:{{1, 5}, {4, 5}, {0.7, 6}, {0.9, 1.5}}的长度为[0.7,6]的长度为5.3;思路分析:1.由题意知道: 要求实际长度,凡是两个线段有重叠的地...原创 2020-01-21 10:04:21 · 1869 阅读 · 0 评论 -
java实现升序数组中元素不重复的二分查找
算法: 二分查找,求给定一个 n 个元素有序的(升序)元素不重复的整型数组 和一个目标值 ,写一个函数搜索数组中的 目标值,如果目标值存在返回下标,否则返回 -1。思路分析:1.以查找[1,2,3,4,5,6,7,8,9]中的8为例,数组记为nums2.首先从索引nums[0]-nums[8]的区间即[1,9]中找这个8,发现8可能在数组内2.先拿数组中间的值nums[4]=5跟8比较...原创 2020-01-20 10:25:11 · 863 阅读 · 0 评论 -
java实现旋转图像算法:给定一个n×n的二维矩阵,将它顺时针旋转90°
旋转图像算法:给定一个n×n的二维矩阵,将它顺时针旋转90°例如:输入:[1, 2, 3][4, 5, 6][7, 8, 9]输出:[7, 4, 1][8, 5, 2][9, 6, 3]输入:[1, 2, 3, 4][5, 6, 7, 8][9, 10, 11, 12][13, 14, 15, 16]输出:[13, 9, 5, 1][14, 10, 6, 2][...原创 2020-01-19 17:33:59 · 1236 阅读 · 0 评论 -
java实现给定一个没有重复数字序列,进行全排列
题目: 给定一个没有重复数字的序列,返回它所有可能的全排列输入: [1,2,3,4]输出: [[1, 2, 3, 4], [1, 2, 4, 3], [1, 3, 2, 4], [1, 3, 4, 2], [1, 4, 2, 3], [1, 4, 3, 2],[2, 1, 3, 4], [2, 1, 4, 3], [2, 3, 1, 4], [2, 3, 4, 1], [2, 4, 1, 3...原创 2020-01-19 15:34:04 · 1230 阅读 · 1 评论 -
java实现一种多key对单value的数据篮子
实现数据篮子:多key对应1value,并提供put,get,remove等方法例如:key1=“张三”key1,key2=“李四”key1,key2,key3=“王五”…思路:1.通过拓展map实现key-value键值对存储2.put方法可变参数个数为n且至少为2,形如map.put(key1,key2,key3,…,value),key为1到(n-1)参数,第n个为value...原创 2020-01-17 16:01:23 · 1378 阅读 · 0 评论 -
java实现两大数相乘
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。例如:输入: num1 = “2”, num2 = “3” 输出: “6”输入: num1 = “1234”, num2 = "56"输出: “69104”思路如下: 先确定个位数>再确定十位数>再确定百位数>…可参考我的另外一篇文章:java...原创 2020-01-17 15:03:10 · 1352 阅读 · 0 评论 -
java实现两个大数相加
使用java的几种基本类型计算大数(比long类型的最大数还大)的时候,编译器就会报错:我们知道,java的基本数据类型有8种,而整型有4种数据类型byteshortintlong二进制长度8163264数的范围[-27,27-1][-215,215-1][-231,2^31-1][-263,263-1]最小数-128-32768-2...原创 2020-01-17 14:14:03 · 1410 阅读 · 0 评论 -
java实现整数1-3999转罗马数字
整数1-3999转罗马数字的一种解我来用几张表格列举思路(仅仅考虑了1-3999奥)罗马字母对应的整数(表1):罗马数IVXLCDM整数1510501005001000列举1-10,(表2)罗马数IIIIIIIVVVIVIIVIIIIXX整数12345678910其中发现其中...原创 2020-01-17 10:59:48 · 314 阅读 · 0 评论