图片弄这么大很难看,博客园没有「点击放大」的功能吗。。嫌麻烦,就不弄外链了。
上周做了个华为的XX算法比赛,被虐出翔,第一道最简单的「扑克牌排序」就整了我到交卷都没做出来。搞得我一直怀疑自己是否不是这方面的料子。
最近二师兄去Tencent实习了,不知道该往哪个方向搞啊!是不是要做出点改变啊。
先把这道题解出来吧。代码在下面。
import java.util.ArrayList; import java.util.Scanner; public class Poker { private static String pokerStr = ""; private static String[] pokerStrSplit; private static ArrayList<Integer> higherThanTwo = new ArrayList<Integer>(); private static ArrayList<Integer> lowerThanTwo = new ArrayList<Integer>(); private static int j = 0; private static int k = 0; private static int l = 0; public static void main(String args[]) { Scanner cin = new Scanner(System.in); System.out.println("input some card-values."); pokerStr = cin.nextLine(); pokerStrSplit = pokerStr.split(","); cin.close(); int num = pokerStrSplit.length; int unsorted[] = new int[num]; int sorted[] = new int[num]; for (int i = 0; i < num; i++) { unsorted[i] = Integer.parseInt(pokerStrSplit[i]); } for (int i = 0; i < num; i++) { if (unsorted[i] > 2) { higherThanTwo.add(unsorted[i]); j++; }// 大于2时降序排列 else if (unsorted[i] == 2 || unsorted[i] == 1) { lowerThanTwo.add(unsorted[i]); k = k + 1; } } int[] higherThanTwoInt = new int[j]; int[] lowerThanTwoInt = new int[k]; for (int i = 0; i < j; i++) higherThanTwoInt[i] = (Integer) higherThanTwo.get(i); for (int i = 0; i < k; i++) lowerThanTwoInt[i] = (Integer) lowerThanTwo.get(i); int[] higherThanTwoSorted = insertionSort(higherThanTwoInt); int[] lowerThanTwoSorted = insertionSort(lowerThanTwoInt); for (int x = 0; x < lowerThanTwoSorted.length; x++) sorted[x] = lowerThanTwoSorted[x]; for (int y = 0; y < higherThanTwoSorted.length; y++) sorted[y + lowerThanTwoSorted.length] = higherThanTwoSorted[y]; StringBuffer sb = new StringBuffer(); for (int i : sorted) { sb.append(i).append(","); } sb.deleteCharAt(sb.length() - 1); System.out.println(sb); } static int[] insertionSort(int[] a) { for (int p = 1; p < a.length; p++) { int temp = a[p]; for (l = p; l > 0 && (temp - a[l - 1]) > 0; l--) a[l] = a[l - 1]; a[l] = temp; } return a; } }
这算法写得。。一般人怎么可能在半小时想出来+写出来!我调试错误就用了好几小时。这是我的版本,应该有更好的。
下面附上另外两道题: