BuildCastles(構建城堡)
Charlemagne, the King of Frankie,
英文描述
請參考圖片中的說明。
中文描述
根據給出的陣列確定能夠蓋多少城堡。
思路和點評
我不能確定我的思路是正確的,也歡迎大家參與討論。
根據給出的陣列,因為有重複的值,我首先想到的是將給出的陣列進行一次過濾和處理,去掉重複的值。
例如,給出的陣列為:int[] A = { 2, 2, 3, 4, 3, 3, 2, 2, 1, 1, 2, 5 };,那麼我希望處理為:int[] A = { 2, 3, 4, 3, 2, 1, 2, 5 }; 去掉重複的值,因為重複的值在這裡沒有意義。
然後根據新的陣列進行判斷,需要判斷的是 2 個端點,你需要將 2 個端點考慮為 0。
那麼根據上面已經處理過的陣列,你在進行遍歷的時候,針對第一個值 2 ,你需要判讀左側的值和右側的值,因為預設左側的值一直為 0 ,那麼右側的值為 3 的話,那麼這裡需要 v 需要 +1;
第 2 個值,因為第二個值的左側,3 > 2, 但右側 3 < 4。因此這個值不適合。
第 3 個值,左側:4 > 3, 右側 4 >3 這個值是合適的。
從這裡我們找到的規律是,進行一次遍歷,找到,如果只的左側和右側同時小於這值,或者左側和右側都同時大於這個值,那麼這個值是合適的取值。
需要注意一個情況就是 {-3, -3},你初始化陣列的時候,這個值為 {-3},那麼這個地方是最少有一個合適的值。
原始碼
原始碼和有關程式碼的更新請訪問 GitHub:
測試類請參考:
程式碼思路請參考:
/**
* https://www.cwiki.us/display/ITCLASSIFICATION/Build+Castles
*/
@Test
public void testBuildCastles() {
// int[] A = { -3, -3 };
int[] A = { 2, 2, 3, 4, 3, 3, 2, 2, 1, 1, 2, 5 };
int h = 0;
int v = 0;
List<Integer> nList = new ArrayList<Integer>();
// Rebuild List
nList.add(A[0]);
for (int i = 0; i < A.length - 1; i++) {
if (A[i] != A[i + 1]) {
nList.add(A[i + 1]);
}
}
// LOOP List to find right location
for (int i = 0; i < nList.size() - 1; i++) {
// COUNT 0
if (i == 0) {
if (nList.get(i) < nList.get(i + 1)) {
v++;
}
} else {
if (nList.get(i) < nList.get(i - 1) && nList.get(i) < nList.get(i + 1)) {
v++;
}
if (nList.get(i) > nList.get(i - 1) && nList.get(i) > nList.get(i + 1)) {
h++;
}
}
}
if (nList.size() == 1) {
h++;
} else if (nList.size() > 2 && nList.get(nList.size() - 1) > nList.get(nList.size() - 2)) {
h++;
}
// CHECK
logger.debug("V - [{}]", v);
logger.debug("H - [{}]", h);
logger.debug("H + V - [{}]", (h + v));
}
測試結果
上面程式的測試結果如下:
|
相關文章
- 安全支招:構築密碼城堡(轉)密碼
- 《城堡守護者:開啟熱血守護之旅》
- 透視HTTPS建造固若金湯的城堡HTTP
- 構建框架框架
- 構建之法
- AOSP構建
- docker構建Docker
- 預設建構函式、引數化建構函式、複製建構函式、解構函式函式
- 構建自己的React UI元件庫: 構建首頁ReactUI元件
- 前端構建_webpack前端Web
- [Dockerfile構建映象]Docker
- DockerFile構建映象Docker
- ## 建構函式函式
- docker構建映象Docker
- 構建Recyclerview DSLView
- Dockerfile構建MySQLDockerMySql
- 建構函式函式
- 構建之法08
- 構建之法09
- 構建之法02
- 構建之法04
- 構建之法11
- 構建之法13
- 如何構建微服務架構微服務架構
- 構建dubbo分散式平臺-maven構建根專案分散式Maven
- [譯] 建構函式已死,建構函式萬歲!函式
- Gradle 與 AGP 構建 API: 配置您的構建檔案GradleAPI
- laravel 使用schema構建器,新增構建表的列型別Laravel型別
- 前端構建大法Gulp系列(一):為什麼需要前端構建前端
- c# tcbs之建構函式呼叫建構函式示例C#函式
- CMake構建學習筆記8-OpenSceneGraph庫的構建筆記
- CMake構建學習筆記10-OsgQt庫的構建筆記QT
- CMake構建學習筆記13-opencv庫的構建筆記OpenCV
- HongHu雲架構 - maven的構建架構Maven
- 構建Docker Image的五個建議Docker
- C++語言之結構體、類、建構函式、拷貝建構函式C++結構體函式
- 構建 API 應用API
- 前端構建祕籍前端