小米oj——最少交換次數
描述
給出一個無序數列,每次只能交換相鄰兩個元素,求將原數列變成遞增數列的最少交換次數。 如:數列:2,3,1,交換3和1後變成:2,1,3;交換1和2之後變成:1,2,3。總共交換2次。
輸入
逗號隔開的正整數數列
輸出
正整數
輸入樣例
2,3,1
複製樣例
輸出樣例
2
本題可以簡化為求陣列中每一個元素的逆序數和
貼上程式碼
private static String solution(String line) { String a[] = line.split(","); int a1[] = new int[a.length]; for(int i=0;i<a1.length;i++) { a1[i]=Integer.parseInt(a[i]); } int temp =0; for(int i = 0;i<a1.length;i++) { for(int j =0;j<i;j++) { if(a1[i]<a1[j]) temp++; } } return String.valueOf(temp); }
相關推薦
小米oj——最少交換次數
描述 給出一個無序數列,每次只能交換相鄰兩個元素,求將原數列變成遞增數列的最少交換次數。 如:數列:2,3,1,交換3和1後變成:2,1,3;交換1和2之後變成:1,2,3。總共交換2次。 輸入 逗號隔開的正整數數列 輸出 正整數 輸入樣例 2,3,1 複製樣例 輸出樣例 2
小米OJ #8【最少交換次數】
描述 給出一個無序數列,每次只能交換相鄰兩個元素,求將原數列變成遞增數列的最少交換次數。 如:數列:2,3,1,交換3和1後變成:2,1,3;交換1和2之後變成:1,2,3。總共交換2次。 輸入
小米OJ上分日誌——(八)最少交換次數
序號:#8 難度:非常難 時間限制:1000ms 記憶體限制:10M 描述 給出一個無序數列,每次只能交換相鄰兩個元素,求將原數列變成遞增數列的最少交換次數。 如:數列:2,3,1,交換3和1後變成:2,1,3;交換1和2之後變成:1,2,3。總共交換2次。 輸入 逗號隔開的正整數數
使序列有序的最少交換次數
題目1: 給出一個序列,只交換相鄰兩數,使得序列升序排列,求出最少交換次數。 思路: 如果說只是交換相鄰兩個數字。那麼最小交換次數就是這個序列的逆序數。 假設序列個數為n,我們先把最大的數換到最後,因為是相鄰數字交換,所以把最大數交換到最後,需要交換的次數為最大數後的
通過交換相鄰數來完成排序所需要的最少交換次數
對一個無序序列進行排序,要求一次只能交換相鄰的兩個數,那麼最少需要交換多少次才可以完成排序呢? 本問題假設序列所有數各不相同。 概念介紹: 1、逆序。一般認為從左向右序列的數字增大認為是正序的,那麼
面試題精選(84):使序列有序的最少交換次數(minimum swaps) + 刪除序列中所有重複的元素
題目描述:(minimum swaps) Given a sequence, we have to find the minimum no of swaps required to sort the sequence. 分析: formula: no. of elemen
經典問題之最少交換次數
題目簡述: 此類題目一般概括為:通過交換相鄰數來完成排序所需要的最少交換次數。 分析: 顯然簡單的氣泡排序就是基於這種思想,但是O(n^2)的效率常常無法滿足題目要求,我們只能另尋它路。 還是模擬原
轉成有序陣列的最少交換次數
問題描述: 有一個1~n的數列的排列,但是這個數列已經被打亂了排列順序,如果我們只是通過“交換任意兩個元素”,那麼,要實現元素從1~n的有序排列,“最少的交換次數是多少?” 解答過程: 首先我們紙上可以先寫寫簡單的情況試試,比如排列:4 3 1 2, 交換次數=3;我們可
nyoj 46-最少乘法次數 (遞推)
sca C/C++ ron content itl 輸入 一次 align IV 46-最少乘法次數 內存限制:64MB 時間限制:1000ms
LeetCode:最少移動次數使得數組元素相等||【462】
true 移動 邏輯 描述 假設 ++i 動作 數組元素 brush LeetCode:最少移動次數使得數組元素相等||【462】 題目描述 給定一個非空整數數組,找到使所有數組元素相等所需的最小移動數,其中每次移動可將選定的一個元素加1或減1。 您可以假設數組的長度最多
小米oj 有多少個等差數列(動態規劃)
有多少個等差數列? 序號:#20難度:困難時間限制:500ms記憶體限制:10M 描述 等差數列是常見數列的一種,如果一個數列從第二項起,每一項與它的前一項的差等於同一個常數,這個數列就叫做等差數列,而這個常數叫做等差數列的公差,公差常用字母d表示。即對於數列S,它滿足了(S
小米oj 幫小學生排隊(排序+插入)
幫小學生排隊 序號:#18難度:有挑戰時間限制:1000ms記憶體限制:10M 描述 用一個數組表示一群正在排隊的小學生,每個小學生用一對整數 H, K 來表示:H 表示這個小學生的身高,K 表示這個小學生前面應該有 K 個人的身高 >= 他。 寫一個演算法,對給出
小米oj 7第一個缺失正數
*描述 給出一個無序的數列,找出其中缺失的第一個正數,要求複雜度為 O(n) 如:[1,2,0],第一個缺失為3。 如:[3,4,-1,1],第一個缺失為2。 輸入 1,2,0 輸出 3 輸入樣例 1,2,0 3,4,-1,1 -1,-3,-5 1,2,3 -1,-10
小米oj 11 構建短字串
11.構建短字串 描述 給定任意一個較短的子串,和另一個較長的字串,判斷短的字串是否能夠由長字串中的字元組合出來,且長串中的每個字元只能用一次。 輸入 一行資料包括一個較短的字串和一個較長的字串,用一個空格分隔,如: ab aab bb abc aa cccc uak areuok
小米oj 6 交叉佇列
引用塊內容描述 給出三個佇列 s1,s2,s3 ,判斷 s3 是否是由 s1 和 s2 交叉得來。 如:s1 為 aabcc , s2 為 dbbca。 當 s3 為 aadbbcbcac 時,返回 true(即將 s1 拆成三部分: aa,bc,c 分別插入 s2 對應位置) 否
小米oj—字串拼顏值
描述 現在是拼顏值的時代。 字串也是如此,如果相鄰字元相同出現次數越多 (即 s[i] == s[i + 1] ),那麼字串越醜,反之,顏值就越高。 我們定義字串的醜陋度計算方法:如果對於兩個相鄰字元相等,加1分。否則不加分。 現在有一個由 a, b 和 ? 組成的字串,計算醜陋度前需要先將
小米oj——找出可能的合的組合——深搜
描述 給出一組不重複的正整數,從這組數中找出所有可能的組合使其加合等於一個目標正整數 M,如: 一組數為 1, 2, 3,目標數為 4,那麼可能的加合組合為: 1, 1, 1, 1 1, 1, 2 1, 2, 1 1, 3 2, 1, 1 2, 2 3, 1 注意相同的組合數字順序不同也
小米oj——純位數
描述 在數學中,所謂“純位數”是指由相同位元重複而組成的自然數。比如在十進位制中,1,22,333,555 都是純位數。 很顯然,15 在十進位制中不是一個純位數,但是在二進位制 15(10) = 1111(2) 卻是一個純位數。 一個顯然的事實是,對於正整數 N,其在 N+1 進制中必
Leetcode-462 Minimum Moves to Equal Array Elements II(最少移動次數使陣列元素相等 II)
1 class Solution 2 { 3 public: 4 int minMoves2(vector<int>& nums) 5 { 6 sort(nums.begin(),nums.end(
462.最少移動次數使陣列元素相等II
給定一個非空整數陣列,找到使所有陣列元素相等所需的最小移動數,其中每次移動可將選定的一個元素加1或減1。 您可以假設陣列的長度最多為10000。 例如: 輸入: [1,2,3] 輸出: 2 說明: 只有兩個動作是必要的(記得每一步僅可使其中一個元素加1或減1): [1,2,3] =