/**
* 把数组排成最小的数
*
* @param arr
* @return
*/
public String printMinNumber(String[] arr) {
if (null == arr || 0 == arr.length) return "";
Arrays.sort(arr, (a, b) -> (a + b).compareTo(b + a));
return String.join("", arr);
}
剑指Offer学习-面试题45:把数组排成最小的数
剑指Offer学习-面试题31:栈的压入,弹出序列
/** * 棧的壓入,彈出序列 * 設置一個輔助棧,依次把彈出序列壓入輔助棧,如果輔助棧頂元素和原始棧棧頂元素相等,則都彈出 * 最後棧爲空就說明彈出序列是棧的壓入序列 * *
剑指Offer学习-面试题34:二叉树中和为某一值的路径
List<Integer> list = new ArrayList<>(); /** * 二叉樹中和爲某一值的路徑 * <p> * 前序遍歷二叉樹,list保存節點,遇到沒有孩子節點並且
剑指Offer学习-面试题21:调整数值顺序使奇数位于偶数前面
/** * 調整數值順序使奇數位於偶數前面 * * @param arr */ public void reorderOddEven(int[] arr) { if
剑指Offer学习-面试题19:正则表达式匹配
/** * 正則表達式匹配 * <p> * .表示任意一個字符 * *表示它前面的字符可以出現任意次 * * @param s * @param patter
剑指Offer学习-面试题18:删除链表的节点
/** * 刪除鏈表的節點 * 給定單項鍊表的頭指針和一個節點指針,定義一個函數在O(1)的時間內刪除該節點 * * @param node * @return */
剑指Offer学习-面试题35:复杂链表的复制
/** * 複雜鏈表的複製 * * @param root * @return */ public ComplexListNode clone(ComplexListNo
剑指Offer学习-面试题44:数字序列中某一位的数字
/** * 數字序列中某一位的數字 * * @param index * @return */ public int digitAtIndex(int index) {
剑指Offer学习-面试题40:最小的k个数
/** * 最小的k個數 * <p> * 利用堆 * * @param arr * @param k * @return */ public
剑指Offer学习-面试题36:二叉搜索树与双向链表
/** * 二叉搜索樹與雙向鏈表 * * @param root * @return */ public BinaryTreeNode convert(BinaryTr
剑指Offer学习-面试题53:在排序数组中查找数字
/** * 在排序數組中查找數字 * 統計一個數字在排序數組中出現的次數 * * @param arr * @return */ public int getN
剑指Offer学习-面试题39:数组中超过一半的数字
/** * 數組中超過一半的數字 * <p> * 遇到相等的數count加1,不相等就減1,如果存在一個數在數組中佔一半,則遍歷完當前值必定是這個數 * * @param arr
剑指Offer学习-面试题42:连续子数组的最大和
/** * 連續子數組的最大和 * * @param arr * @return */ public int findGreatestSumOfSubArray(int[
剑指Offer学习-面试题51:数组中的逆序对
int res = 0; /** * 數組中的逆序對 * <p> * 歸併排序求逆序對 * * @param arr * @return */