文章简述 大家好,本篇是个人的第4篇文章. 承接第3篇文章<开启算法之路,还原题目,用debug调试搞懂每一道题>,本篇文章继续分享关于链表的算法题目. 本篇文章共有5道题目 一,反转链表(经典题目) 1.1.1 题目分析 反转链表是经典的题目,题中信息描述很清晰,给定一个单链表,将其反转. 先说说有什么思路呢?从题中给的案例输出结果看,是不是只需要将输入的链表的指针改成相反方向,就可以得到要输出的结果. 就好比如下图所示: 但是问题来了,我们是单链表,是没办法将下个节点直接指向该节点的上个节…
文章简述 大家好,本篇是个人的第 5 篇文章 从本篇文章开始,分享关于链表的题目为中等难度,本次共有 3 道题目. 一,两数相加 1.1 题目分析 题中写到数字是按照逆序的方式存储,从进位的角度看,两两节点相加我们是可以直接将进位传递到下一组两两节点相加. 比如题中第二组节点[4]和节点[6]相加结果为 10,而 10 就需要进位,也就是说该节点只能保存数字[0],而进位[1]就要传递到下一组节点相加. 那再整理下思路. 如果两个链表的节点数是相等的,那只需要依次将两两节点进行相加.如果节点数是…
文章简述 大家好,本篇是个人的第 3 篇文章. 承接第一篇文章<手写单链表基础之增,删,查!附赠一道链表题>,在第一篇文章中提过,在刷算法题之前先将基础知识过一遍,这样对后面的做算法题是很有帮助的. 在本次的文章中,按照个人的刷题计划,会分享关于链表的 3 道简单级别的算法题(可是依然感觉不简单) 但是不要紧,从本篇文章开始分享的算法题个人都会把关于这道题的全部代码写出来,并用debug的形式,分解每一步来整理出来. 通过还原题目场景,用 debug 调试的方式去分析,印象更加深刻些. 本篇文…
题目来源于 LeetCode 第 23 号问题:合并 K 个排序链表. 该题在 LeetCode 官网上有关于链表的问题中标注为最难的一道题目:难度为 Hard ,通过率在链表 Hard 级别目前最低. 题目描述 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入:[  1->4->5,  1->3->4,  2->6]输出: 1->1->2->3->4->4->5->6 输入 图一 输出 图二 题目…
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. class Solution { public: bool Find(vector<vector<int> > array, int target) { int col = array.size(); ; while (i < col) { ;//考虑边界条件 ) continue; if (target…
题目:给定一个存放整数的数组,请写一个算法,把偶数移动到该数组的右边,奇数放在该数组的左边,请考虑时间和空间的最优算法. package com.forezp.util; /** * 题目:给定一个存放整数的数组,请写一个算法, * 把偶数移动到该数组的右边,奇数放在该数组的左边,请考虑时间和空间的最优算法. * * @author Administrator * */ public class ArrayDemo { //判断是否为偶数 public static boolean isEven…
package com.forezp.util; import java.util.Arrays; /** * 两个int数组,都是从小到大的的排列,请合并为一个新的数组,也是从小到到大的排列, * 请写出性能最优的算法.<br> * * * * @author Administrator * */ public class ArrayDemo1 { public static void main(String[] args) { int[] a = { 1,3,5,7,9}; int[] b…
package com.xiaowu.demo; import java.util.Scanner; /** * Java实现将阿拉伯数字转为汉字 * * @author WQ * */ public class Demo28 { private String toChinese(String string) { String[] s1 = { "零", "一", "二", "三", "四", "…
/** * Java实现中文数字转换为阿拉伯数字 * * * @author WQ * */ public class Demo26 { public static void main(String[] args) { int chineseNumber2Int = chineseNumber2Int("十万一千"); System.out.println(chineseNumber2Int); } private static int chineseNumber2Int(String…
package com.xiaowu.demo; //一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. public class Demo24 { public static void main(String[] args) { f2(123454321); } // 方法一 public static void f1(int n) { if (n >= 10000 && n < 100000) { String s = String.va…