題目一:把帶有空格的一句話例如:i am a boy 變成 boy a am i
單詞順序全部反轉,但是單詞內部的字母順序以及空格相對位置不能變。
思路:一次就轉換成功看起來有些困難,於是這裡分兩步進行。
i am a boy --> yob a ma i -->boy a am i
首先將陣列全部反轉,但發現這時候單詞中的字母順序也改變了,因此還需要進行一次單詞內部的反轉。從這裡可以看出,我們需要進行兩次反轉操作。在寫**的時候就要注意了。
根據傳的引數確定反轉的位置 函式:這裡引數寫進去要反轉的起始位置,方便後續操作。在確定迴圈中交換的位置的時候可以先模擬幾個數字,找規律。
public static voidreversearray(charwords,intstart,intend)反轉函式:注意,這裡首先要將整個句子反轉,得到中間的狀態。思考如何反轉單詞內部呢?這裡注意到每遇到乙個空格就相當於馬上有下乙個單詞了,所以可以根據空格確定要反轉的小單詞的位置。注意最後乙個單詞。}
public static voidswapstring(charwords)題目二:把陣列的後面k個元素移到前面。例如 wqmdnzxln1234 把後面6個移到前面,變為ln1234wqmdnzx。}reversearray(words, j, i);
}
思路:雖然此題有很多種解法,例如可以新建乙個陣列,然後找到原陣列後面k個,先放入新陣列,再將剩下的放入新陣列。但這樣需要重新開闢乙個o(n)的空間,時間複雜度也很高。我們需要另外想乙個更好的方案。
根據上面一道題,我們可以進行兩次操作。 wqmdnzxln1234 -->4321nlxzndmqw-->ln1234wqmdnzx
相當於先反轉整個陣列,然後再分別反轉前面k個和剩下的部分。
public static voidswapkarr(charwords,intk)
資料結構與演算法 二 陣列反轉 reverse
前面我們提到了陣列,現在我們就以陣列來實現反轉 如我們定義乙個陣列 int array 反轉無疑就是將陣列下標第0個元素與下標最後乙個元素互換,然後是第1個元素與倒數第2個元素的互換,依次類推 我們設想陣列長度為基數或偶數都沒有問題 我們需要乙個方法,在方法中就做一件事情,那就是交換元素,在交換元素...
演算法訓練 動態陣列使用
演算法訓練 動態陣列使用 時間限制 1.0s 記憶體限制 512.0mb 從鍵盤讀入n個整數,使用動態陣列儲存所讀入的整數,並計算它們的和與平均值分別輸出。要求盡可能使用函式實現程式 平均值為小數的只保留其整數部分。樣例輸入 53 4 0 0 2 樣例輸出 9 1樣例輸入 73 2 7 5 2 9 ...
演算法 java 實現陣列的反轉
陣列的反轉原理跟氣泡排序有點像,都是通過交換位置,只不過陣列的反轉是交換第乙個和最後乙個的位置,第二個和倒數第二個的位置,氣泡排序是互動相鄰兩個的位置.下面看一下具體的 實現 package test 陣列的反轉 public class testdemo for int elem arr 列印反轉...