自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

今日面試題:子序列

開發(fā) 前端
給定長度為n的整數(shù)數(shù)列:a0,a1,..,an-1,以及整數(shù)S。這個數(shù)列會有連續(xù)的子序列的整數(shù)總和大于S的,求這些數(shù)列中,最小的長度。

給定長度為n的整數(shù)數(shù)列:a0,a1,..,an-1,以及整數(shù)S。這個數(shù)列會有連續(xù)的子序列的整數(shù)總和大于S的,求這些數(shù)列中,最小的長度。

又見排序分析

原題

給定大小為n的數(shù)組A,A中的元素有正有負。請給出方法,對其排序,保證:

  • 負數(shù)在前面,正數(shù)在后面
  • 正數(shù)之間相對位置不變
  • 負數(shù)之間相對位置不變

能夠做到時間復(fù)雜度為O(n),空間復(fù)雜度為O(1)么?

分析

這類題目,還有其他的變形,比如,數(shù)組A有奇數(shù)和偶數(shù),排序奇數(shù)在前偶數(shù)在后,并且奇數(shù)和偶數(shù)內(nèi)部的相對順序不能變。那么這類的題目,該如何解決呢?

首先,暴力法可行:從左到右掃描數(shù)組,遇到***個負數(shù),與其前面的每一個元素進行交換,直到***個位置,這里并不能直接交換, 因為這樣就改變了正數(shù)的相對位置了。后面的繼續(xù)掃描,第二個負數(shù),依次交換到第二個位置。依次類推。算法總的時間復(fù)雜度為O(n^2)。

上面這個方法,大多數(shù)同學,都可以給出。那么,是否有更快的方法呢?大家請看下面的方法:統(tǒng)計負數(shù)的個數(shù),設(shè)為M

  • 找到索引k>M的***個負數(shù)
  • 使用i和j兩個索引,i從0開始,直到遇到***個正數(shù),j從k開始,直到遇到***個負數(shù)。交換i,j位置上的數(shù),然后符號取反
  • 對于A[0,M]和A[M, n]分別執(zhí)行上面三步
  • 修正符號:前面的M個為負數(shù),后面的為正數(shù)。

下面舉例來說明,對于數(shù)組{-1,1,3,-2,2},根據(jù)描述,有M=2,k=3。i遇到***個正數(shù)為A1=1,j 遇到***個負數(shù)為A[3]=-2。然后交換i和j位置上的值, 數(shù)組變?yōu)閧-1, -2, 3, 1, 2}, 然后改變符號,得到{-1,2,3,-1,2}。然后遞歸處理{-1,2},{3,-1,2},最終得到{-1,2,1,-3,2}。進行***一步,修正 符號, 得到{-1,-2,1,3,2}。即為最終答案。這個方法是nlog(n)的,比上面的提高了一些。

但是上面的方法,仍舊不是O(n)的。那么O(n)的方法,是否存在呢?我們認為,接近O(n)的方法是有的。但是,方法過于復(fù)雜。這類問題,可以統(tǒng)稱為 stable 0-1 sorting。還是蠻有意思的。大家感興趣的話,可以參考下面的文章:http://www.diku.dk/hjemmesider/ansatte/jyrki/Paper/KP92b.pdf

原文鏈接:http://www.ituring.com.cn/article/56013

責任編輯:陳四芳 來源: 圖靈社區(qū)
相關(guān)推薦

2013-09-10 14:50:12

數(shù)組面試題

2013-10-16 16:15:26

單鏈表

2013-10-16 15:50:20

Google面試題

2020-06-04 14:40:40

面試題Vue前端

2011-03-24 13:27:37

SQL

2023-11-13 07:37:36

JS面試題線程

2010-10-11 09:47:54

Windows Pho

2015-09-02 09:32:56

java線程面試

2014-09-19 11:17:48

面試題

2009-06-06 18:34:05

java面試題

2009-06-06 18:36:02

java面試題

2013-10-16 16:38:39

鏈表矩陣

2025-02-26 07:58:41

2013-05-29 10:23:36

Android開發(fā)移動開發(fā)Java面試題

2021-02-23 12:43:39

Redis面試題緩存

2020-11-05 10:01:35

系統(tǒng)設(shè)計軟件

2009-06-16 14:03:16

Hibernate面試Hibernate面試

2018-03-08 18:40:47

Java百度面試題

2013-01-05 14:51:34

JavaScriptjQuery面試

2023-07-14 08:12:21

計時器unsafecontext
點贊
收藏

51CTO技術(shù)棧公眾號