劍指offer第66:構建乘積陣列
題目描述
給定一個數組A[0,1,...,n-1],請構建一個數組B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。
# -*- coding:utf-8 -*- class Solution: def multiply(self, A): # write code here head=[1] tail=[1] n=len(A) for i in range(len(A)-1): head.append(A[i]*head[i]) tail.append(A[n-i-1]*tail[i]) B=[] for j in range(len(head)): B.append(head[j]*tail[-j-1]) return B
分為head和tail兩個部分
相關推薦
劍指offer第66:構建乘積陣列
題目描述 給定一個數組A[0,1,...,n-1],請構建一個數組B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 # -*- coding:utf-8 -*
劍指offer第22:連結串列中倒數第k個結點
題目描述 輸入一個連結串列,輸出該連結串列中倒數第k個結點。 class Solution: def FindKthToTail(self, head, k): # write code here if k<=0 or head
劍指offer第3:陣列中重複的數字
題目描述 在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。 例如,如果輸入長度為7的陣列{2,3,1,0,2,5,3},那麼對應的輸出是第一個重複的數字2。 # -*- c
劍指offer第65:不用加減乘除做加法
題目描述 寫一個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算子號。 # -*- coding:utf-8 -*- class Solution: def Add(self, num1, num2): # write code here
劍指offer第64:求1+2+3+...+n
題目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 # -*- coding:utf-8 -*- class Solution: def Sum_Solution(self, n):
劍指offer第63:股票的最大利潤
假設有一個數組,它的第i個元素是一支給定的股票在第i天的價格。如果你最多隻允許完成一次交易(例如,一次買賣股票),設計一個演算法來找出最大利潤。 # -*- coding:utf-8 -*- class Solution: def Sell_stock(self, num):
劍指offer第62:圓圈中最後剩下的數字
題目描述 每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成一個大圈。然後,他隨機指定一個數m,讓編號為0的小朋友開始報數。每次喊到m-1的那個小朋友要出列唱首歌,然後可以在禮品箱
劍指offer第57:和為S的兩個數字
題目描述 輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 輸出描述: 對應每個測試案例,輸出兩個數,小的先輸出。 # -*- coding:utf-8 -*- class Solutio
【劍指offer第六題】旋轉陣列的最小數
題目描述 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋
劍指offer第六題【旋轉陣列的最小數字】c++實現
題目描述 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入一個非遞減序列的一個旋轉,輸出旋轉陣列的最小元素。例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。 本題給的也算是有序數列,一看就應該和二分沾邊,事實也是這樣。 題目給的是非遞減序列,就是
劍指Offer面試題:13.調整陣列順序使奇數位於偶數前面
一、題目:調整陣列順序使奇數位於偶數前面 題目:輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有奇數位於陣列的前半部分,所有偶數位於陣列的後半部分。 例如有以下一個整數陣列:12345,經過調整後可以為:15342、13542、13524等等。 二、解題思路 2.1 基本解
劍指Offer面試題:7.旋轉陣列的最小數字
一、題目:旋轉陣列的最小數字 題目:把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入一個遞增排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。 這道題最直觀的解法並不難,從頭到尾遍歷陣列一次
劍指offer第32題(把陣列排成最小的數)
題目:輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 思路: * 考慮到大數問題,先將整型陣列轉換成String陣列,然後將String陣列排序
劍指offer:構建乘積陣列
題目描述 給定一個數組A[0,1,...,n-1],請構建一個數組B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 # -*- coding:utf-8 -*- class
劍指offer-51:構建乘積陣列
題目描述 給定一個數組A[0,1,…,n-1],請構建一個數組B[0,1,…,n-1],其中B中的元素B[i]= A[0] x A[1] x … x A[i-1] x A[i+1] x … x A[n-1]。不能使用除法。 思路 由題目可知B[i]=A[0] x A[1] x …
【劍指Offer學習】【面試題52:構建乘積陣列】
題目:給定一個數組A[0,1,…,n-1],請構建一個數組B[0,1,…,n-1],其中B中的元素B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1],不能使用除法。 解題思路 例如:A[]={1,2,3}求B[] B[0]=
劍指offer:構建乘積陣列(python)
設有陣列大小為5。對於第一個for迴圈第一步:b[0] = 1;第二步:b[1] = b[0] * a[0] = a[0]第三步:b[2] = b[1] * a[1] = a[0] * a[1];第四步:b[3] = b[2] * a[2] = a[0] * a[1] * a[2];第五步:b[4] = b[
《劍指Offer》題目:鏈表中倒數第k個結點
倒數 -- 輸出 col ota pan code 輸入 tno 題目描述:輸入一個鏈表,輸出該鏈表中倒數第k個結點 題目分析:因為不能直接從鏈表的尾部遍歷,所以要分兩步走: 第一步:從鏈表的頭部開始遍歷,直至鏈表的尾部,統計出鏈表結點的個數 第二步:根據鏈表結點的個數,計
劍指offer第3題:從尾到頭打印鏈表
off 輸出結果 pre col 結構 ava image stack 鏈表 方法一:采用棧來存儲,用ArrayList保存。註意題目給出的輸出結果是ArrayList import java.util.ArrayList; import java.util.Sta
劍指offer第55.5:平衡二叉樹
題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 class Solution: def IsBalanced_Solution(self, pRoot): # write code here if not pRoot: