周賽160 陣列變換

2022-06-13 02:15:16 字數 1292 閱讀 5371

題目如下:

首先,給你乙個初始陣列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

17if (arr[i] > arr[i-1] && arr[i] > arr[i+1

])18

22if (arr[i] < arr[i-1] && arr[i] < arr[i+1

])23

27 temp[i] =arr[i];28}

29if (temp ==arr)

3033 arr =temp;34}

3536

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。首 尾元素 永不 改變。過些時日,你...