算法总结
blitheW
这个作者很懒,什么都没留下…
展开
-
Java代码实现替换空格
剑指Offer-替换空格 题目: 实现一个函数,把字符串中的每一个空格替换为"%20"。 背景: 在URL中存在一些特殊字符,如空格、#等,我们需要把这些特殊字符转换为服务器所能识别的字符,转换的规则为在%后加上ASCII码的两位十六进制的表示。 思路如下 如果每一次发现一个空格就在这个空格的位置插入一个%20的话,考虑不覆盖后边的字符的情况下,就要将后边的进行后移,而如果中间穿插多个空格就会导致部分字符串进行多次后移,这样肯定不是最让人满意的答案。在允许自己分配足够的内存的情况下,因为一个空格替换需要多原创 2021-07-03 22:56:49 · 190 阅读 · 0 评论 -
Java实现俩个大数相乘
不用BigInteger实现两个大数字相乘 思路 位数 1 2 3 数字 3 4 5 6 7 8 如表所示 两个数345和678 两个数位数相加为6的数积为40 两个数位数相加为5的数为32+35 两个数位数相加为4的数为24+30+28 两个数位数相加为3的数为21+24 两个数位数相加为2的数为18 然后逐次进行进位得到最终的数 代码实现 public static void main(String[] args) { System.out.print原创 2021-07-02 00:01:40 · 389 阅读 · 0 评论 -
Java实现二维数组中查询是否存在某一个数字
剑指Offer算法 题目: 二维数组中查找是否存在某一个值, 数组从左到右递增,从上到下递增, 如下所示查找7返回true ,查找5返回fallse,数组类型如下所示 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 思路: 我们从边角上开始选值,当查询7是否存在数组中时,右上角值为9,大于7,由于已经定义了数组特性,从上到下,从左到右依次递增,所以9所在的列肯定要比7大,故不用再考虑这一列,去掉9这一列之后,右上角的数8比7大,继续去掉这一列,此时右上角数2小于7,去原创 2021-06-22 22:44:32 · 941 阅读 · 0 评论 -
Java实现查找出数组中重复的数字
题目描述: 找出数组中重复的数字 在一个长度为n的数组里的所有数字都在 0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如:如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出的是重复的数字2或者3 先考虑测试案例 1、是否存在非法数字,即存在超出n大小的数字或者是小于0的数字 2、数组是否为空或者长度为0 public static void main(String[] args) {原创 2021-05-30 18:08:06 · 1028 阅读 · 0 评论 -
求链表中倒数第k个节点
问题: 求链表中倒数第k个节点 结题思路: 用两个指针,第一个指针先走k-1步,然后两个指针一起走,当第一个指针走到尾节点的时候。第二个指针指向的就是倒数第k个节点。 先考虑可能存在的异常场景 1、链表为空 2、k值大于链表size 3、k值小于等于0 代码实现 public static String getKvalue(LinkedList<String> list){ //控制台输入k值 Scanner scanner = new Scanner(Syste原创 2021-05-08 22:34:59 · 180 阅读 · 0 评论