給定一個數組,根據陣列名求陣列的長度
題目:給定一個數組名字,如何根據陣列名求陣列的長度?
本題來自於一個同學筆試題,筆試中是實現一個氣泡排序,但是排序的引數只有一個數組名,沒有陣列中元素的個數;void bubbleSort(int a[]);
思路:要先實現這個氣泡排序,首先要獲取這個陣列中陣列元素的個數。然後對陣列排序,下面說一下如何根據陣列名獲取一個數組長度。
首先我們如果在區域性作用域中定義一個數組的話,獲取陣列中元素個數是很方便的:
int main(int argc, char * argv[]) { int a[11]; for (int i = 0; i < 10; ++i) { a[i] = i; } int len = 0;
len = (sizeof(array) / sizeof(array[0]));
cout << len << endl;
return 0;
}
//但是將陣列名作為引數傳遞到一個函式中,這樣這個陣列名就退化成了一個簡單的指標int*,此時sizoef(a)的值為4,顯然這種方法不能獲取陣列的長度。
但在C++中可以使用模板技術可以實現:
//在C語言中可以使用巨集定義來求:template <class T> int getArrayLen(T& array) { return (sizeof(array) / sizeof(array[0])); } int main(int argc, char * argv[]) { int a[11]; for (int i = 0; i < 10; ++i) { a[i] = i; } int len = 0; cout << getArrayLen(a) << endl; return 0; }
#define getSize(a, len){len = (sizeof(a) / sizeof(a[0]));}
相關推薦
給定一個數組,根據陣列名求陣列的長度
題目:給定一個數組名字,如何根據陣列名求陣列的長度? 本題來自於一個同學筆試題,筆試中是實現一個氣泡排序,但是排序的引數只有一個數組名,沒有陣列中元素的個數;void bubbleSort(int a
有自己的程式碼--題目:給定一個數組,裡面全是正整數。數字大小表示這一步最多可以向後移動幾個節點。總是從陣列第一個元素開始移動。問如何移動,可以以最少步數移動到最後一個節點。
原文:https://yq.aliyun.com/articles/547799 描述: 題目:給定一個數組,裡面全是正整數。數字大小表示這一步最多可以向後移動幾個節點。總是從陣列第一個元素開始移動。問如何移動,可以以最少步數移動到最後一個節點。 例如:[3,4,2
給定一個數組,陣列中有正有負,求出連續陣列中和值最大的數(陣列長度大於等於1)
刷牛牛客遇到的題,想給出完整而又簡潔的function(python解答,但是關鍵是思想,語言不是問題啦)1.給定一個數組,陣列中有正有負,求出連續(全部都是正的時候,所有值累加就是最大值)(全部為負的時候,max(array)就是我們想要的)# -*- coding:utf
給定一個數組,返回最大子陣列的累加和並且返回該子陣列
給定一個數組Arr,返回子陣列的最大累加和 例如 arr[] = {1,-2,3,5,-2,6,-1};所有子陣列中,[3,5,-2,6] 可以累加出最大和12 函式在設計的時候,應該考慮傳入的陣列Arr,同時要有一個傳出陣列,返回值會最大累加和,為整數 以下是程式碼
給定一個數組,找出陣列缺少的最小的正整數
題目使這樣的:請設計一個高效演算法,查詢陣列中未出現的最小正整數。 給定一個整數陣列A,請返回陣列中未出現的最小正整數。 測試樣例: [-1,2,3,4] 返回1 一看到這個題目我想到的是用另外的一個數組B,長度為A的長度+1,來儲存遍歷陣列A的數的值。 if(A[i]
給定一個數組,按序排列,從陣列找出若干個數,使得這若干個數字的和與M最為接近,(揹包問題)
思路:對於陣列中的每一個數,觀察它們取或不取對最後結果的影響。並且記錄下若干數字的和與M的差的絕對值最小時所取到的若干數字。 /* * 微軟100, 9月28題, 輸入和接近M * sum 即為M值 * num排序的陣列 * len陣列長度 * vec所取到若干數
給定一個數組,求出陣列元素的排列和組合——Java實現
1. 思路 組合數C(n,m)和全排列A(n,n)可以通過遞迴的方式,直接實現。 而A(n,m)則可以通過組合數和全排列間接求出A(n,m)=C(n,m)*A(m,m),即對得到的組合數中的每個元素進行全排列 2. Java實現 package com.zfy.test
給定一個數組,找出這個和最大的連續子陣列的和
將這個連續子陣列分為兩部分,一個是字首,一個是後一個元素,要使這個連續子陣列最大,那麼它的字首肯定不能為負,不然這個字首對即將加上的值就無意義,用一個max記錄最大值,每次當前綴加上後一個元素的時候判斷和是否大於max,大於則更新max,再判斷和是否小於0,小於0則將字首更
面試題:給定一個數組,陣列中只包含0和1。請找到一個最長的子序列,其中0和1的數量是相同的
這個題目,看起來比較簡單,一些同學可能認為題目的描述符合動態規劃的特徵,然後就開始用動態規劃解,努力找狀態轉移方程。這些同學的感覺,是很正確的。但,找狀態轉移方程,我們要對原來的陣列進行變換一下。 原來是0和1的串,我們將0都換為-1。這樣題目目標就變成,找到一個最長的子串,子串數字和是0。設原陣列為A
給定一個數組,陣列中有正負數,求出所有字陣列中和值最大的值。
/**當我們加上一個正數時,和會增加;當我們加上一個負數時,和會減少。如果當前得到的和是個負數,那麼這個和在接下來的累加中應該拋棄並重新清零, 不然的話這個負數將會減少接下來的和 */ public static int maxSum(int[] a) { int
題目三:給定一個數組,值可以為正、負和0,請返回累加和為給定值k的最長子陣列長度。
import java.util.HashMap; /** * * 2、給定一個數組,值可以為正、負和0,請返回累加和為給定值k的最長子陣列長度。 * 咱們可以反推,比如:1- 100,陣列和為1000. * 要求最長和為300的子陣列,我可以反著求第一
題目四:給定一個數組,值可以為正、負和0,請返回累加和小於等於k的最長子陣列長度。 時間複雜度:O(n)
import java.util.HashMap; /** * * 3、給定一個數組,值可以為正、負和0,請返回累加和小於等於k的最長子陣列長度。 時間複雜度:O(n) * * 這裡需要分為兩步,第一步是獲取,以每個位置開頭最小和的長度。第二步,從0到N逐
給定一個數組,找出其中出現奇數次的元素
package com.yzcl.test; public class JiShu { public static void main(String[] args) { //給定一個含有n個元素的整型陣列a,例如{1,1,2,4,3,3,1},找出其中出現奇數次的元素,並列印,輸出:1,
給定一個數組,其中只有一個數出現一次,別的數都出現3次,找出這個數(go)
1.思路 用兩個數one=0、two=0分別記錄bits位上1出現的次數,如果一個數出現一次,則one等於這個數,two=0; 如果一個數出現兩次,則two等於這個數, one等於0;如果一個數出現第三次,則one = 0, two = 0 ,three等於這個數。 我們以陣
給定一個數組,請倒序輸出每一個數
題目描述: 給定一個數組, int[] abc = { 20, 90, 48, 92}; 請倒序輸出每一個數。 即,輸出 92 48 90 20 c #include<stdio.h> int main() { int a[4]={20,90,48
前端演算法:給定一個數組,寫一個函式將所有0的移動到它的末尾,同時保持非零元素的相對順序(移動零)
給定一個數組nums,寫一個函式將所有0的移動到它的末尾,同時保持非零元素的相對順序。 例: 輸入: [0,1,0,3,12] 輸出: [1,3,12,0,0] 注意: 您必須在不製作陣列副本的情況下就地執行此操作。 最小化操作總數。 <script>
給定一個數組,如何構造一個二叉排序樹(ADL)
構造二叉排序樹 構造一棵二叉排序樹就是依次輸入資料元素,將它們插入到二叉排序樹中的適當位置上的過程。具體過程是:每次讀入一個元素,就建立一個新的節點,若二叉排序樹非空,則將新節點的值
【演算法】給定一個數組,除了一個數出現1次之外,其餘數都出現3次,輸出出現一次的那個數。
給定一個數組,除了一個數出現1次之外,其餘數都出現3次。找出出現一次的數。如:{1, 2, 1, 2, 1, 2, 7},找出7.格式:第一行輸入一個數n,代表陣列的長度,接下來一行輸入陣列A[n],(輸入的陣列必須滿足問題描述的要求),最後輸出只出現一次的數。
給定一個數組,其中只有一個數出現一次,別的數都出現3次,找出這個數
題目描述 給定一個數組,其中只有一個數x出現一次,別的數都出現3次,找出這個數x。(線性時間複雜度) 思路 這個用異或不可以。 可以設定一個長度為32的int陣列。統計每位上出現1的次數,如果次數能被3整除,說明x該位上為0,否則為1 java程式碼實
給定一個數組,求其某個子區間,該區間和最大
#include<iostream> #include<vector> #include<iterator> #include<type_traits> #include<ctime> #include<ran