1. 程式人生 > >面試題,求一個整數陣列中和最大的連續子陣列,例如:[1, 2, -4, 4, 10, -3, 4, -5, 1]的最大連續子陣列是[4, 10, -3, 4](需寫明思路,並程式設計實現)

面試題,求一個整數陣列中和最大的連續子陣列,例如:[1, 2, -4, 4, 10, -3, 4, -5, 1]的最大連續子陣列是[4, 10, -3, 4](需寫明思路,並程式設計實現)

php實現:



function get_max_value($arr) {

  $max_sum=0;//最大的值

  $max_start=0;//和最大子陣列開始下標

  $max_end=0;//和最大的子陣列結束下標

  $length=count($arr)-1;//陣列最大下標

  for ($i=0;$i<=$length;$i++){

    $sum=0;//初始化

    for ($j=$i;$j<=$length;$j++){

      $sum+=$arr[$j];

      if ($sum>$max_sum){

        $max_sum=$sum;

        $max_start=$i;

        $max_end=$j;

      }

    }

    

  }

 return array_slice($arr, $max_start, ($max_end-$max_start+1));//返回結果陣列

}
$test = [1, 2, -4, 4, 10, -3, 4, -5, 1];
$x = get_max_value($test);

var_dump($x);

--------------------------------------------------分割線------------------------------------------------------

輸出結果為: array(4) { [0]=> int(4) [1]=> int(10) [2]=> int(-3) [3]=> int(4) }

相關推薦

一個整數數組中和連續數組例如[1, 2, -4, 4, 10, -3, 4, -5, 1]的連續數組是[4, 10, -3, 4]寫明思路編程實現

class col code pan IT [] 例如 exit arr $arr = [ 1 , 2 , -4 , 4 , 10 , -23 , 4 , -5 , 1]; $max_sum = 0; $sum=0; $new = []; $i =

試題一個整數陣列中和連續陣列例如[1, 2, -4, 4, 10, -3, 4, -5, 1]的連續陣列是[4, 10, -3, 4]寫明思路程式設計實現

php實現: function get_max_value($arr) { $max_sum=0;//最大的值 $max_start=0;//和最大子陣列開始下標 $max_end=

【每日試題】給定一個字串出其長的重複

題目:給定一個字串,求出其最長的重複子串 如字串abcdabcabcd,求的最長重複子串為abcd 程式碼: void LongChar(char* str) {  if(str==NULL)   return;  int max=0;  int first=0;  int

演算法題 一個整數陣列通過元素加減運算得到指定結果的所有運算過程. 例如5,4,6,7,1】= 9 ?

題目: 給定一個整數陣列int[] a (a.length > 1),和一個整數值 m,試輸出所有運算結果等於m的運算過程。可使用的運算方式只有加法和減法。陣列元素最多參與一次運算。例如,給定陣列【5,4,6,7,1】和整數9,輸出運算結果為9的運算過程如下: +

一個程序輸入一個整數依次輸出它的每位數的英文單詞

整數 docs zip edas blank sdk mk4 fan tun 礁崖壕vntky聊勤和http://www.docin.com/zdb62317迸衛藏2vjx9懈中來http://tushu.docin.com/sina_6345203404撬乓帕9j36c療

java--Fibonacc由數字1123...組成的從第三個數字起每一個數字為前兩個數字的和。建立一個方法接受一個整數引數顯示從第一個元素開始總共由該引數指定的個數所構成的所有斐波那契數

題目完整描述:一個斐波那契數列是由數字1、1、2、3、5、8、13、21、34等等組成的,其中每一個數字(從第三個數字起)都是前兩個數字的和。建立一個方法,接受一個整數引數,並顯示從第一個元素開始總共由該引數指定的個數所構成的所有斐波那契數字。例如,如果執行 java Fibonacci 5(Fib

一個整數加上100後是一個完全平方數再加上168還是一個完全平方數整數JAVA

分析問題: 由題意可知: 1、這個整數加上100後是完全平方數,而完全平方數不為0,所以有可能是完全平方數的數最小為-100。 2、完全平方數均為整數,那麼列舉法(窮舉法)就可以很好的解決這個問題。 程式清單 import java.util.Scanner; public

C語言一個整數的二進位制形式表示中1的個數用函式實現

1:我們知道,整數在計算機中是以補碼的形式儲存的。如果給定一個十進位制正整數是          如何轉換成二進位制數的呢?用的是除以2取餘數的方法。若餘數為1,則1的個數加          1;然後用商再除以2取餘數,直到商為0;但是負數除2的餘數為負數。因此,可以 

有一組不同高度的臺階一個整數陣列表示陣列中每個數是臺階的高度當開始下雨了雨水足夠多臺階之間的水坑會積水多少呢? 如下圖可以表示為陣列[0,1,0,2,1,0,1,3,2,1,2,1]

這是一道今日頭條的面試題 """ 有一組不同高度的臺階,有一個整數陣列表示,陣列中每個數是臺階的高度,當開始下雨了(雨水足夠多)臺階之間的水坑會積水多少呢? 如下圖,可以表示為陣列[0,1,0,2,1,0,1,3,2,1,2,1],返回積水量6。 """ 分析:(手繪,

試題包含n個節點1到nn個節點的所有二叉搜尋樹

二叉搜尋樹滿足的條件 當前根節點的值大於左子樹節點的值 當前根節點的值小於右子樹節點的值 左右子樹同樣是二叉搜尋樹 根據上述規則可以看出,根節點值不同,形成的二叉搜尋樹就不同,那麼[1:n]範圍內的n個數就有n個不同的選擇。 [1:i−1]這i-1

題目描述 Description 一行N個方格開始每個格子裡都有一個整數。現在動態地提出一些問題和修改提問的形式是一個特定的區間[a,b]中所有元素的和;修改的規則是指定某一個格子x加上或

題目描述 Description 一行N個方格,開始每個格子裡都有一個整數。現在動態地提出一些問題和修改:提問的形式是求某一個特定的子區間[a,b]中所有元素的和;修改的規則是指定某一個格子x,加上或者減去一個特定的值A。現在要求你能對每個提問作出正確的回答。1

任意給定一個整數N一個小的正整數M(M>1)使得N*M的十進位制表示形式裡只含有1和0。

解決這個問題首先考慮對於任意的N,是否這樣的M一定存在。可以證明,M是一定存在的,而且不唯一。 簡單證明:因為   這是一個無窮數列,但是數列中的每一項取值範圍都在[0, N-1]之間。所以這個無窮數列中間必定存在迴圈節。即假設有s,t均是正整數,且s<t,有 。於是迴圈節長度為t-s。於是10

一個整數的百位數十位數個位數

#include<stdio.h> int main () { int x= 189,b1,b2,b3,sum; b3 = x/100; /*計算百位數字*/ b2 = (x-b3*100)/10;

2.給定一個整數陣列一個目標值找出陣列中和為目標值的兩個數。 示例: 給定 nums = [2, 7, 11, 15], targ

class Solution { public int[] twoSum(int[] nums, int target) { for (int i = 0; i < nums.length; i++) { for (

一個整數的各位數字之和位數

/輸入一個整數,求各位數字之和,及位數,例如234 和為9 位數3/ #include<stdio.h> int main(void) { int integer,count=

Java演算法總結輸入一個整數整數的二進位制表示中有多少個1

    求一個整數的二進位制中1的個數。      題目:輸入一個整數,求該整數的二進位制表達中有多少個1。例如輸入10,由於其二進位制表示為1010,有兩個1,因此輸出2。      分析:這是一道很基本的考查位運算的面試題。包括微軟在內的很多公司都曾採用過這道題。 

遞迴演算法n的加法組合一個整數拆分成多個整數相加的形式 O(N)時間O(N)空間

網上的多種解法比較複雜,本文用遞迴方法,22行程式碼搞定。時間和空間複雜度已經降到最低! 第三版:加入創作思路。 這個函式的主要功能就是輸出所有組合。既然是輸出所有的組合,那就意味著內部有一個遍歷所有組合的過程。既然是遍歷,而且是O(N)時間,那就說明這個遍歷是按照某種輸出次序,從“第一個組合”遍歷到

試題11-數值的整數次方

import str 整數 面試 1.0 pre pow col 類型 題目描述 給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。 代碼 import java.lang.Math; public cl

試題-如何判斷一個物件是不是陣列型別

在前端面試中,我們經常會被問道,如何判斷一個物件是不是陣列型別,下面就這一點展開詳細的描述,並總結一下共有幾種方法。 1.我們首先回顧一下typeof操作符的用法 操作符可以用來檢測給定變數的資料型別,返回的值有以下幾種:undefined,boolean,string,number,object,f

試題11:旋轉陣列小數字

題目:把一個數組最開始的若干個元素搬到陣列末尾,即陣列的旋轉; 例如:{3,4,5,1,2}是{1,2,3,4,5}的一個旋轉,輸出該陣列的最小值1 程式碼如下: #include<stdio.h> #include<stdlib.h> #include&