題目如下:
首先,給你乙個初始陣列arr
。然後,每天你都要根據前一天的陣列生成乙個新的陣列。
第i
天所生成的陣列,是由你對第i-1
天的陣列進行如下操作所得的:
假如乙個元素小於它的左右鄰居,那麼該元素自增1
。
假如乙個元素大於它的左右鄰居,那麼該元素自減1
。
首、尾元素 永不 改變。
過些時日,你會發現陣列將會不再發生變化,請返回最終所得到的陣列。
樣例如下
其實這就是一道簡單的暴力題,乙個死迴圈,乙個for迴圈,三個判斷語句,乙個跳出死迴圈條件語句,寫完。
由於我們不知道哪一天才是陣列變化的時候,所以寫了乙個死迴圈。
接著是for,題目中給了陣列的更新方式:
1、比相鄰的大就減
2、比相鄰的小就加
3、頭尾節點不變
很明顯我們需要從頭到尾遍歷一遍陣列,所以套了一層for
與更新條件相呼應的就是三個判斷條件,在for迴圈內部的
1、if (!i || i == n - 1)
2、if (arr[i] > arr[i - 1] && arr[i] > arr[i + 1])
3、if (arr[i]
在三個if語句裡填入相應**,就可以完成陣列更新。哦,對了,還有個else不符合以上情況的陣列執行else,而且條件語句 1 必須要放在for迴圈體的最前邊。
當for迴圈結束時,我們就要判斷如何跳出死迴圈了,記得題目要我們輸出什麼嗎,不變的陣列,就是說,temp == arr時,就可以break了,否則的話arr = temp;這樣整個**框架就出來了。下面貼一下c++的**實現:
1 class solution
17 if (arr[i] > arr[i-1] && arr[i] > arr[i+1])
18
22 if (arr[i] < arr[i-1] && arr[i] < arr[i+1])
23
27 temp[i] = arr[i];
28 }
29 if (temp == arr)
30
33 arr = temp;
34 }
35
36 return temp;
37 }
38 };
周賽不易,諸君共勉! 周賽160 陣列變換
題目如下 首先,給你乙個初始陣列arr。然後,每天你都要根據前一天的陣列生成乙個新的陣列。第i天所生成的陣列,是由你對第i 1天的陣列進行如下操作所得的 假如乙個元素小於它的左右鄰居,那麼該元素自增1。假如乙個元素大於它的左右鄰居,那麼該元素自減1。首 尾元素 永不 改變。過些時日,你會發現陣列將會...
5096 陣列變換
首先,給你乙個初始陣列 arr。然後,每天你都要根據前一天的陣列生成乙個新的陣列。第 i 天所生成的陣列,是由你對第 i 1 天的陣列進行如下操作所得的 假如乙個元素小於它的左右鄰居,那麼該元素自增 1。假如乙個元素大於它的左右鄰居,那麼該元素自減 1。首 尾元素 永不 改變。過些時日,你會發現陣列...
1243 陣列變換
題目描述 首先,給你乙個初始陣列 arr。然後,每天你都要根據前一天的陣列生成乙個新的陣列。第 i 天所生成的陣列,是由你對第 i 1 天的陣列進行如下操作所得的 假如乙個元素小於它的左右鄰居,那麼該元素自增 1。假如乙個元素大於它的左右鄰居,那麼該元素自減 1。首 尾元素 永不 改變。過些時日,你...