1.1、題目1
劍指 Offer 45. 把陣列排成最小的數
1.2、解法
這題看的題解,發現自己思路錯了,
這里直接拿大佬的題解來講吧,
一開始這里就把創一個string的陣列來存int陣列
String.valueOf將int轉為string存進陣列,
這里應該排序,題解中用到了lambda運算式,判斷條件是x+y是否大于y+x
然后添加金stringbuilder然后轉成字串回傳,
1.3、代碼
class Solution {
public String minNumber(int[] nums) {
String[] strs = new String[nums.length];
for(int i = 0; i < nums.length; i++)
strs[i] = String.valueOf(nums[i]);
Arrays.sort(strs, (x, y) -> (x + y).compareTo(y + x));
StringBuilder res = new StringBuilder();
for(String s : strs)
res.append(s);
return res.toString();
}
}
2.1、題目2
劍指 Offer 61. 撲克牌中的順子
2.2、解法
這是通過判斷五個值最大值減去最小值是否小于5,
通過哈希表來判斷是否重復,如果有重復的值則不是順子,
也可以先陣列排序后,取最大值和排序后除零外的最小值來比較,
2.3、代碼
class Solution {
public boolean isStraight(int[] nums) {
Set<Integer> s = new HashSet();
int max=0,min=14;
for(int i=0;i<nums.length;i++){
if(nums[i]==0) continue;
max = Math.max(max,nums[i]);
min = Math.min(min,nums[i]);
if(s.contains(nums[i])) return false;
s.add(nums[i]);
}
return (max-min)<5;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/300593.html
標籤:Java
上一篇:實作負載均衡的兩種方式
下一篇:學習Tomcat(二)之容器概覽
