mirror of
				https://github.com/krahets/hello-algo.git
				synced 2025-10-31 10:26:48 +08:00 
			
		
		
		
	 b2f0d4603d
			
		
	
	b2f0d4603d
	
	
	
		
			
			* Add Ruby and Kotlin icons Add the avatar of @curtishd * Update README * Synchronize zh-hant and zh versions. * Translate the pythontutor blocks to traditional Chinese * Fix en/mkdocs.yml * Update the landing page of the en version. * Fix the Dockerfile * Refine the en landingpage * Fix en landing page * Reset the README.md
		
			
				
	
	
		
			41 lines
		
	
	
		
			855 B
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			855 B
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
| /**
 | ||
|  * File: max_capacity.kt
 | ||
|  * Created Time: 2024-01-25
 | ||
|  * Author: curtishd (1023632660@qq.com)
 | ||
|  */
 | ||
| 
 | ||
| package chapter_greedy
 | ||
| 
 | ||
| import kotlin.math.max
 | ||
| import kotlin.math.min
 | ||
| 
 | ||
| /* 最大容量:貪婪 */
 | ||
| fun maxCapacity(ht: IntArray): Int {
 | ||
|     // 初始化 i, j,使其分列陣列兩端
 | ||
|     var i = 0
 | ||
|     var j = ht.size - 1
 | ||
|     // 初始最大容量為 0
 | ||
|     var res = 0
 | ||
|     // 迴圈貪婪選擇,直至兩板相遇
 | ||
|     while (i < j) {
 | ||
|         // 更新最大容量
 | ||
|         val cap = min(ht[i], ht[j]) * (j - i)
 | ||
|         res = max(res, cap)
 | ||
|         // 向內移動短板
 | ||
|         if (ht[i] < ht[j]) {
 | ||
|             i++
 | ||
|         } else {
 | ||
|             j--
 | ||
|         }
 | ||
|     }
 | ||
|     return res
 | ||
| }
 | ||
| 
 | ||
| /* Driver Code */
 | ||
| fun main() {
 | ||
|     val ht = intArrayOf(3, 8, 5, 2, 7, 7, 3, 4)
 | ||
| 
 | ||
|     // 貪婪演算法
 | ||
|     val res = maxCapacity(ht)
 | ||
|     println("最大容量為 $res")
 | ||
| } |