2023年8月1日 星期二

資料結構-第2章陣列 Array 題目 2.1一維陣列-範例 2.1 插入元素到陣列中的指定位置

範例 2.1 插入元素到陣列中的指定位置

題目:給定一個整數陣列A,在編號 k 的位置插入一新元素 value

輸入 A = [5,11,25,36,49,56,77,120],k = 3 ,value = 27

輸出 A = [5,11,25,27,36,49,56,77]

初始想法:

A = [5,11,25,36,49,56,77,120]
k = 3
value = 27
B = list()
for i in range(len(A)):
    if i < k:
        B.append(A[i])
    elif i == k:
        B.append(value)
    elif i > k:
        B.append(A[i-1])
print(B)

後來調整:建立一個 function,來處理 arrayIndert(arr,k,value)。

那我就建立一個arrayIndert(arr,k,value),但是正面處理range(k+1,len(arr)-1)。所以程式如下

def arrayInsert(arr,k,value):
    for i in range(k+1,len(arr)-1):
        arr[i] = arr[i-1]
    arr[k] = value
   
A = [5,11,25,36,49,56,77,120]
arrayInsert(A,3,27)
print(A)

沒想到,出來的結果差強人意:

原因是 i = k+1 時,A[k+1] = A[k]

           i = k+2 時,A[k+2] = A[k+1],此時的A[k+1]已不是原先的A[k+1]

 此外range 不處理len(arr) - 1,所以需要做調整。

所以改用反推回來,也就是range(len(arr)-1,k,-1)。所以程式改寫為

def arrayInsert(arr,k,value):
    for i in range(len(arr)-1,k,-1):
        arr[i] = arr[i-1]
    arr[k] = value

A = [5,11,25,36,49,56,77,120]
arrayInsert(A,3,27)
print(A)

 最後結果也是如正確答案一般:


資料來源:

1.Python 資料結構×演算法 刷題鍛鍊班:234 題帶你突破 Coding 面試的難關


題目目錄

01.資料結構-第2章陣列 Array 題目 2.1一維陣列-延伸刷題:找出最大元素的位置

02.資料結構-第2章陣列 Array 題目 2.1一維陣列-範例 2.3 找出陣列中最大(或最小)的元素

03.資料結構-第2章陣列 Array 題目 2.1一維陣列-範例 2.2 刪除陣列中的指定位置的元素

04.資料結構-第2章陣列 Array 題目 2.1一維陣列-範例 2.1 插入元素到陣列中的指定位置

05.資料結構-第2章陣列 Array 題目 2.1一維陣列-刷題10:找出小於 n 的質數

06.資料結構-第2章陣列 Array 題目 2.1一維陣列-刷題11:從陣列中找出相加等於 k 的兩數

07.資料結構-第2章陣列 Array 題目 2.1一維陣列-練習題2.1 下列程式片段執行的輸出為何?

08.資料結構-第2章陣列 Array 題目 2.1一維陣列-練習題2.2 資料儲存於 A[0] ~ A[ n-1 ]。

09.資料結構-第2章陣列 Array 題目 2.1一維陣列-練習題2.3 下述程式擬找出陣列 A 中的極值

11.資料結構-第2章陣列 Array 題目 2.1一維陣列-刷題12:找零錢問題

12.資料結構-第2章陣列 Array 題目 2.1一維陣列-刷題13:比例背包問題

13.資料結構-第2章陣列 Array 題目 2.1一維陣列-刷題14:最少裝箱浪費問題

14.資料結構-第2章陣列 Array 題目 2.1一維陣列-刷題15:最大子陣列(Maximum Subarray)

15.資料結構-第2章陣列 Array 題目-2-D Array 的運算-範例 2.4 矩陣的輸出

沒有留言:

張貼留言

軟體定義網路SDN-主題2-1 OpenFlow 概述

學習目標: 一.介紹OpenFlow特性 二.介紹OpenFlow Ports:實體port、邏輯port、保留port 一.介紹OpenFlow特性 1.OpenFlow 是 (1).控制器與交換器之間溝通的通訊協定 (2)使用了TCP (port 6653;舊版 port 6...