05AB1E , 8 7 5 ไบต์
บันทึก 2 ไบต์ขอบคุณ @Adnan
0š¥þO
ลองออนไลน์!
อย่างไร?
นี้คือการใช้อัลกอริทึมที่ถูกพบครั้งแรกโดย@tsh ถ้าคุณชอบคำตอบนี้อย่าลืมโหวตคำตอบด้วย!
ทุกครั้งที่ตึกระฟ้าต่ำกว่าหรือสูงกว่าก่อนหน้าตึกระฟ้าสามารถทาสีได้ฟรีโดยเพียงแค่ขยายพู่กัน
ตัวอย่างเช่นการวาดภาพตึกระฟ้าและในรูปด้านล่างไม่มีค่าใช้จ่ายBC
ในทางกลับกันเราต้องใช้พู่กันใหม่ 2 อันในการทาสีตึกระฟ้าไม่ว่าพวกเขาจะสามารถนำกลับมาใช้ใหม่ได้หรือไม่E
สำหรับตึกระฟ้าแรกเราต้องการพู่กันมากเท่าที่มีอยู่ในพื้น
เปลี่ยนเป็นคณิตศาสตร์:
S=h0+∑i=1nmax(hi−hi−1,0)
หากเราเพิ่มลงในรายการสิ่งนี้สามารถทำให้ง่ายขึ้นเพื่อ:0
S=∑i=1nmax(hi−hi−1,0)
แสดงความคิดเห็น
0š¥þO # expects a list of non-negative integers e.g. [10, 9, 8, 9]
0š # prepend 0 to the list --> [0, 10, 9, 8, 9]
¥ # compute deltas --> [10, -1, -1, 1]
þ # keep only values made of decimal digits
# (i.e. without a minus sign) --> ["10", "1"]
O # sum --> 11