日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

米拓世纪初试

發布時間:2024/4/11 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 米拓世纪初试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

米拓世紀初試筆記;

兩道編程題:

給定一個由正數,負數和0組成的整數數組,將所有為0的元素,挪到數組末尾。要求時間復雜度O(n)

解題思路:采用左右指針,同時向中間遍歷,這樣只需要遍歷一遍數組就可以完成

/*** @author chen*/ public class Main {/*** 一個由正數,負數和0組成的整數數組,將所有為0的元素,挪到數組末尾** @param array 整數數組*/public void moveNumber(int[] array) {int left = 0;int right = array.length - 1;while (left < right) {// 從左往右查找一個 0 的元素while (array[left] != 0) {left++;}// 從右往左查找一個非 0 元素while (array[right] == 0) {right--;}if (left < right) {// 交換兩個數array[left] = array[left] ^ array[right];array[right] = array[left] ^ array[right];array[left] = array[left] ^ array[right];}}} }

給定任意一個自然數,獲取它重新排列后,下一個比它大的自然數,要求時間復雜度O(n)。例如:

給定1233,它的下一個是1323;給定1323,它的下一個是1332;給定9876,它的下一個不存在;請設計一個函數,完成此功能。

解題思路:將數字轉換成數組,從右往左查找第一個前一個數字比后一個小的位置,如果存在交換兩個數字,如果不存在就返回-1

/*** @author chen*/ public class Main {/*** 獲取它重新排列后,下一個比它大的自然數,如果不存在則返回-1** @param number 數字* @return 下一個比他大的自然數*/private int nextNumber(int number) {int[] array = numberToArray(number);if (array.length == 1) {return -1;}// 調換位置開始的地方,后一個數比前一個數大int i = -1;boolean flag = false;for (i = array.length - 1; i > 0; i--) {if (array[i] > array[i - 1]) {flag = true;break;}}// 交換位置if (flag) {array[i] = array[i] ^ array[i - 1];array[i - 1] = array[i] ^ array[i - 1];array[i] = array[i] ^ array[i - 1];// 組合數字int sum = 0;for (int value : array) {sum = sum * 10 + value;}return sum;}return -1;}/*** 將一個數字轉換成數組** @param number 數字——數字為自然數* @return 數字數組*/private int[] numberToArray(int number) {if (number == 0) {return new int[1];}int[] temp = new int[100];int index = 0;while (number > 0) {int t = number % 10;temp[index++] = t;number /= 10;}System.out.println(index);int[] array = new int[index];for (int i = 0, j = index - 1; i < index; i++, j--) {array[i] = temp[j];}return array;} }

總結

以上是生活随笔為你收集整理的米拓世纪初试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。