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時 首先...