剑指Offer-把数组排成最小的数

题目描述#

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

思路#

可以看成是一个排序问题,先将整型数组转换成String数组,在比较两个字符串 o1 和 o2 的大小时,应该比较的是 o1+o2 和 o2+o1 的大小,如果 o1+o2 < o2+o1,那么应该把 o1 排在前面,否则应该把 o2 排在前面。

代码实现#

Copy
package Tree; import java.util.ArrayList; /** * 二叉树中和为某一值的路径 * 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 * 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 */ public class Solution45 { private ArrayList<ArrayList<Integer>> result = new ArrayList<>(); private ArrayList<Integer> list = new ArrayList<>(); public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int target) { if (root == null) { return result; } list.add(root.val); target -= root.val; if (target == 0 && root.left == null && root.right == null) { result.add(new ArrayList<Integer>(list)); } FindPath(root.left, target); FindPath(root.right, target); list.remove(list.size() - 1); return result; } public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } }
posted @   武培轩  阅读(317)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示
CONTENTS