/**
給定乙個int[n] a,其在下標為0到k上以及k到n-1上都是單調遞增,且a[n-1]小於a[0],求k
*/public
class
bbb//初始下標
int left =0;
int right = length -1;
int startvalue = source[0]
;int mid =0;
int k =0;
//二分
while
(left < right)
//若右邊的區域的第乙個數小於起始值,說明k在左邊,反之,在右邊
if(source[mid +1]
< startvalue)
else
}//迴圈退出後,若左右座標相同,說明這個座標就是k
return left == right ? left : k;
}public
static
void
main
(string[
] args)
;// int a = ;
int[
] a =
; system.out.
println
(findk
(a));}
}
/**
給定⼀乙個 ⽆無向圖 包含 n 個節點和 m 條邊, 每條邊 mi 的代價為 ci 。圖中⼀一條 路路徑的懲罰是指對該路路徑上所有邊的代價 ci 執⾏行行位運算或(bitwise or)操 作得到的。假如⼀一條路路徑上包含了了邊 m1,m2,m3 ... ... ,mk,那麼對應的懲 罰就是 c1 or c2 or c3 or ... or ck。(or代表位運算或,即 「|」 )
問題:給定圖上兩個節點 start 和 end,找到從 start 到 end 的所有路路徑中懲罰 值最⼩小的路路徑,對應的最⼩小懲罰值作為結果返回。如果路路徑不不存在就返回 -1。
注意:任意兩個節點之間最多存在⼀一條邊,圖中可能存在有環路路。
引數含義:
n:節點總數;節點編號從 1 開始,⼀一直到 n,共有 n 個; edges:⽆無向圖的邊;edges[i] 表示邊mi,其中 edges[i][0] 和 edges[i][1] 是mi的兩個節點的編號,edges[i][2] 是mi對應的代價 ci; start 和 end:路路徑的開始和結束節點編號
*/public
class
findsnodepunish
//獲得點到其它的距離集合
private
static map
>
getedgesmap
(int n,
int[
] edges));
return map;
}//深度優先,獲取所有可能的路徑及懲罰
private
static
intminpath
(map
> edgesmap,
int start,
int end)
if(path < result)
}return result;
}public
static
void
main
(string[
] args),,
};system.out.
println
(beautifulpath(3
, edges,1,
3));
}}
/**
* 給定⼀乙個按開始時間從⼩小到⼤大排序的時間區間集合,請將重疊的區間合併。
* 時 間區間集合⽤用⼀乙個⼆二維陣列表示,⼆二維陣列的每⼀一⾏行行表示⼀乙個時間區間(閉區 間),
* 其中 0 位置元素表示時間區間開始,1 位置元素表示時間區間結束。
*/public
class
combinetime
int[
] midlevalue =
newint
[intervals.length]
;//返回區間的偏移量
int returnvalueindex =0;
//迴圈,每個區間跟後乙個區間比較,若右閉大於左起,合併,合併後的右閉取兩者的右閉中大的
for(
int i =
0; i < intervals.length -
1; i++
)int
rightone = intervals[i +1]
;if(leftone[1]
>= rightone[0]
)else
}//去掉null值
int[
] returnvalue =
newint
[returnvalueindex +1]
;for
(int i =
0; i <= returnvalueindex; i++
)return returnvalue;
}public
static
void
main
(string[
] args),,
,}; system.out.
println
(arrays.
deeptostring
(merge
(intervals)))
;}}
/**
* 給定⼀乙個⾮非空字串串 s 和⼀乙個縮寫 abbr,請校驗它們是否匹配。
* 假設字串串中只包含⼩小寫字⺟母,縮寫中只包含⼩小寫字⺟母和數字。
* 縮寫中的數字 表示其縮略略的字元數;連續多位數字表示⼀乙個多位數
*/public
class
validabbr
else
if(wordsindex >= words.length)
//是否匹配
if(temp == words[wordsindex]
)else}}
return wordsindex == words.length;
}public
static
void
main
(string[
] args)
}
每日一題 2020 04 09
題目鏈結 這題字首和 雙指標 指標指的比較迷 這類題型大體知道思路,畢竟柑橘這是我最熟悉的題型了 太菜了 解題思路 include include include include using namespace std typedef long long ll const int n 200010 ...
20200409 日誌配置檔案
日誌jar包衝突 既然拋了jar包衝突 那我們就排除乙個jar 包即可。關鍵是排除哪乙個jar包 這裡注意下了,如果你用的是logback日誌,一定要排除slf4j log4j12包,不要排除logback classic包。最重要的是你想使用哪個日誌框架?日誌門面,日誌實現,橋接包。這三個是必備的...
演算法 常見演算法題
演算法題 假如有100個不相同的數,比如從1到100,怎樣使用10次取出其中的10個不同的數字,要求每個數取出的概率一樣 一開始沒有說10次,所以我說,使用乙個random函式,以時間為種子來取,當取出乙個時,做標記,下次再取到這個數時,重新取一次 然後他就說了如果只能夠取10次怎麼辦?一開始我想到...