給定一個數組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[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]。不能使用除法。
/*
思路:題目要求B的i個元素等於A中除了i個元素所以元素乘積
因此思路很清晰,雙重迴圈:
第一層迴圈表示將要相乘A的元素;
第二層迴圈表示B中的元素要乘上A的元素(判斷條件:i==j則直接跳過)
*/
class Solution { public: vector<int> multiply(const vector<int>& A) { int size = A.size(); vector<int> B(size,1); for(int i=0;i<size;i++){ for(int j=0;j<size;j++){ if(i == j) continue; B[j] *= A[i]; } } return B; } };
相關推薦
給定一個數組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[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]。不能使用除法。 /* 思路:題目要求B的i個元素等於A中除了i個元素所以元素乘積 因此思路很清
給定陣列a[0:n-1]試設計一個演算法,在最壞情況下用[3n/2 -2 ] 次比較找出a[0:n-1]中元素的最大值和最小值;教材2-15
給定陣列a[0:n-1]試設計一個演算法,在最壞情況下用[3n/2 -2 ] 次比較找出a[0:n-1]中元素的最大值和最小值; 解:要求對於陣列用小於【3n/2-2】的比較次數找到兩個最值 可以用陣列第一個元素來初始化max,min 然後遍歷陣列,分別和max,min比較,一遍就可以找
面試題3:在一個長度為n的數組裏的所有數字都在0到n-1的範圍內。 數組中某些數字是重復的,但不知道有幾個數字是重復的。也不知道每個數字重復幾次。請找出數組中任意一個重復的數字。 例如,如果輸入長度為7的數組{2,3,1,0,2,5,3},那麽對應的輸出是第一個重復的數字2。
length value 如果 while 返回 sys public ret || package siweifasan_6_5; /** * @Description:在一個長度為n的數組裏的所有數字都在0到n-1的範圍內。 * 數組中某些數字是重復的,
python拼接字串的特殊方法,除了常見的+加號和%百分號以外,還可以不用加號直接拼>>> 'a''b' 結果:'ab',以及使用'abc{0}{1}{2}'.format(a, b, c)函式拼接
>>> 'a''b' 'ab' >>> a, b, c = 1, 2, 3 >>> 'abc{0}{1}{2}'.format(a, b, c) 'abc123' Python字串拼接詳解 Pyth
【Python】Python實現N級臺階,一次可以走1步,2步,3步,一共多少種上樓梯方法
去面試的時候,筆試題有一個二選一,有一個是這個問題,當時選的另一個,現在實現下這個臺階問題。 如果只有一級臺階,那麼方法只有1種,如果是有二級臺階,那麼方法2種,如果三屆臺階,那麼實現方法有4種。 如果臺階數再增加,大於三屆臺階以後,可以認為是隻有一二三級臺階的一個重複實現,可以使用遞迴的方
2.題目:有n個人圍成一圈,順序排號,從第一個開始報數(從1到3報數),凡報到3的人退出圈子,問最後最後留下的是原來第幾號的那位. 提示:用陣列完成
#include <stdio.h> int main() { int n; printf(“輸入人數:\n”); scanf("%d",&n); int a[1000]; int i,temp; int count = 0; temp =
ACMNO.11 一個數如果恰好等於它的因子之和,這個數就稱為"完數"。 例如,6的因子為1、2、3,而6=1+2+3,因此6是"完數"。 程式設計序找出N之內的所有完數,並按下面格式輸出其因子
寫在前面,心得感悟~ 程式碼越來越有難度! 這個ACM題,我除錯了 將近50次~ 一個小時! 真的是,年紀輕輕的搞什麼ACM呀! 關於題的解決思路放在下面再寫吧! 題目描述 一個數如果恰好等於它的因子之和,這個數就稱為"完數"。 例如,6的因子為1、2、3,而6=1+2+
劍指-OFFER_3 java_在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。
題源: 在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。 例如,如果輸入長度為7的陣列{2,3,1,0,2,5,3},那麼對應的輸出是第一個重複的數字
編寫函式,找出1-1000之內所有能被7整除或被11整除,但不能同時被7和11整除的數,放到A所指的陣列內,並返回個數
#include<stdio.h> int f(int a[]) { int i = 0,n; for(n = 1;n <=1000;n++) { if(n%7==0 || n%11==0) //能被7整除或被11整除
ACMNO.38 C語言-報數 有n人圍成一圈,順序排號。從第1個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來的第幾號的那位。
題目描述 有n人圍成一圈,順序排號。 從第1個人開始報數(從1到3報數),凡報到3的人退出圈子。`在這裡插入程式碼片` 問最後留下的是原來的第幾號的那位。 輸入 初始人數n 輸出 最後一人的初始編號 樣例輸入 3 樣例輸出 2 來源/分類
關於有N個人圍成一圈,第一個人從1開始報數,報到M的人出列,求最後一個出列的人。
一道面試題的java解法(其實就是一道演算法題): 有n個人圍成一圈,編號分別為1到n,第一個人從1開始報數,報到m的人出列,然後從下一個人重新從1開始報數,報到m的人出列,如果報數到了最後一個人,下個人就繼續從第一個人開始報數。求最後一個出列的人的編號? 也可以這樣說:
有n個人圍成一圈,從第1個人開始,1、2、3報數,報至3出局,餘下的人繼續從1、2、3報數,問:最後剩下的一人是原來的第幾號?同時求出被淘汰編號的序列。(要求:用迴圈佇列解決該問題。)
han.h: #include <iostream> #include <stdlib.h> #include "Status.h" using namespace std; typedef struct QNode {ElemType data;struct QNode *next;
樓梯上有n階臺階,上樓時可以一步上1階,也可以一步上兩階,編寫演算法計算共有多少種不同的上樓梯的方法。
數學模型:此問題如果按照習慣,從前向後思考,也就是從第一階開始,考慮怎麼樣到第二階、第三節、第四階……則很難找到問題的規律;而反過來先思考“到第n階有哪幾種情況”,答案就簡單了,只有兩種情況; (1)
n 個人圍成一圈(編號1-n),數到3的出列,最後剩下的人的編號
問題: n 個人圍成一圈(編號1-n),數到3的出列,然後又從頭開始數,一直迴圈到最後一個人,請問最後剩下的人的編號? public int numberToExit(int total, int interval) { boolean[] arr = new bool
n個人圍成一圈,從第1個人開始數數,數到3的人出圈,輸出最後剩餘的人編號(約瑟夫環問題)
#include <iostream> #include<stdlib.h> #define MAX 100 using namespace std; int main() { cout << "Hello World!" << endl; i
有n個人圍成一圈,順序排號,從第一個開始報數(從1到m報數),凡報到m的人退出圈子,問最後最後留下的是原來第幾號的那位
//題目:有n個人圍成一圈,順序排號,從第一個開始報數(從1到3報數),凡報到3的人退出圈子,問最後最後留下的是原來第幾號的那位. //提示:用陣列完成 #include <stdio.h> #define N 100 int fun (int n, int m
有1,2,3一直到n的無序陣列,排序
題目:有1,2,3,..n 的無序整數陣列,求排序演算法。 時間複雜度 O(n) 空間複雜度O(1) 分析: 對於一般陣列的排序顯然 O(n) 是無法完成的。 既然題目這樣要求,肯定原先的陣列有一定的規律,讓人們去尋找一種機會。 例如
一個臺階總共有n級,如果一次可以跳1級,也可以跳2級。 求總共有多少總跳法,並分析演算法的時間複雜度。
一個臺階總共有n級,如果一次可以跳1級,也可以跳2級。 求總共有多少總跳法,並分析演算法的時間複雜度。 設:總共有F(n)種跳法 那麼, F(1) = 1; F(2)= 2; F(
有n個人圍成一圈,順序排號。 從第1個人開始報數(從1到3報數), 凡報到3的人推出圈子, 問最後留下的是原來第幾號的人。
#include<stdio.h> int main() { int m,n,k,i,a[55]; int *p; p=a; scanf("%d",&n); for(i=0; i<n; i++) {
Java 寫有n個人圍成一圈,順序排號,從第一個人開始報數(從1~3報數), 凡報到3的人退出圈子,問最後留下的人原來排在第幾號。
package tests; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * 題目描述, *Java 寫有n個人圍成一圈,順序排號,從第一個人開始報數(從1~3報數), *凡報到3的