劍指offer面試題3 陣列中重複的數字

2021-10-22 22:56:45 字數 1473 閱讀 7024

package com.cloud.algorithm.demo;

import org.junit.test;

public

class

topic3

,那麼對應的輸出時

* 重複的數字2或者3

* @param

*/// @test

public

void

topic03_1()

;int i =

demo01

(arrs)

; system.out.

println

("-----"

+i);

}/**

* 面試題2: 不修改陣列找出重複的數字

** 在乙個長度為n+1的陣列裡的所有數字都在1~n的範圍內,所以陣列中至少有乙個數字是重複的,

* 請找出陣列中任意乙個重複的數字,但不能修改輸入的陣列,例如,如果輸入長度為8的陣列,

* 那麼對應的輸出時重複的數字2或者3

* @param

*/@test

public

void

topic3_2()

;int

arrs =

;int i =

demo02

(arrs)

; system.out.

println

("-----"

+i);

}public

intdemo01

(int

arrs )

int temp=arrs[arrs[i]];

arrs[arrs[i]

]=arrs[i]

; arrs[i]

=temp;}}

}return-1

;}/** * 《左移

* 在數字沒有溢位的前提下,對於正數和負數,左移一位都相當於乘以2的1次方,左移n位就相當於乘以2的n次方

* >>右移

* 右移一位相當於除2,右移n位相當於除以2的n次方**

* @param arrs

* @return

*/public

intdemo02

(int

arrs )

else}if

(countnum>

(middle-start+1)

)else

}return-1

;}public

intgetcountnum

(int

arrs,

int start,

int end)

int count=0;

for(

int i=

0;i< arrs.length;i++)}

return count;

}}

劍指offer 面試題3

思路 從左下角或者右上角開始比較 簡單版本 查詢方式從右上角開始查詢 如果當前元素大於target,左移一位繼續查詢 如果當前元素小於target,下移一位繼續查詢 進行了簡單的修改,可以判定輸入型別為字元的情況 查詢方式從左下角開始查詢 如果當前元素大於target,上移一位繼續查詢 如果當前元素...

劍指offer面試題3

前言 從最近的比賽中,真的可以看出來自己做題目太少了,一些常見的演算法,思路都不怎麼會,接下來要好好努力了 分析 書中給的分析思路很好,要解決乙個複雜的問題,最有效的方法就是從乙個具體的問題入手,這道題就可以舉例子,查詢7這個元素,首先從右上角開始,9比7大,所以9所在的列不會有,查詢8,比7大,所...

《劍指offer》陣列相關面試題

在乙個長度為n的陣列裡所有數字都在0 n 1範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複,也不知道重複了幾次,請找出陣列中任意乙個重複的數字。例如,長度為7的陣列,那麼對應的輸出應該是重複的數字2或者3.思路 重排這個陣列,從頭到尾依次掃瞄這個陣列中的每個數字。掃到下標為i的數字m時 首先...