05AB1E , 8 7 5 byte
Disimpan 2 byte berkat @Adnan
0š¥þO
Cobalah online!
Bagaimana?
Ini menggunakan algoritma yang pertama kali ditemukan oleh @tsh . Jika Anda menyukai jawaban ini, pastikan untuk membatalkan jawaban mereka juga!
Setiap kali gedung pencakar langit lebih rendah dari atau setinggi yang sebelumnya, itu dapat dicat 'gratis' hanya dengan memperpanjang sapuan kuas.
Misalnya, mengecat gedung pencakar langit B dan C pada gambar di bawah ini tidak ada biaya.
Di sisi lain, kita perlu 2 sapuan kuas baru untuk mengecat gedung pencakar langit E , tidak peduli apakah itu akan digunakan kembali setelah itu atau tidak.
Untuk gedung pencakar langit pertama, kita selalu membutuhkan sapuan kuas sebanyak lantai.
Mengubah ini menjadi matematika:
S= h0+ ∑i = 1nmaks ( hsaya- hi - 1, 0 )
Jika kita menambahkan ke daftar, ini dapat disederhanakan menjadi:0
S= ∑i = 1nmaks ( hsaya- hi - 1, 0 )
Berkomentar
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