日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

leetcode 927. Three Equal Parts | 927. 三等分(Java)

發(fā)布時間:2024/2/28 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 927. Three Equal Parts | 927. 三等分(Java) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目

https://leetcode.com/problems/three-equal-parts/

題解

不知道為什么是 hard,感覺這道題沒有套路(印象中這幾道 hard 都沒有什么套路,這就是 hard 的原因嗎),甚至沒有 get 到這題的難點(diǎn)是什么,大概是在考察分析問題的能力吧。

分析完之后,思路很簡單。先算總共有多少個 1,就可以分離出右邊的部分了。然后根據(jù)右邊的部分,匹配出左邊部分和中間部分。

class Solution {public int[] threeEqualParts(int[] arr) {int leftEnd, midEnd, rightBegin;// 統(tǒng)計(jì)每個相同部分中1的個數(shù)int count = 0;for (int n : arr)count += n;if (count == 0) return new int[]{0, arr.length - 1};if (count % 3 != 0) return new int[]{-1, -1};count /= 3;// 分離最后一個部分int cnt = 0;int i;for (i = arr.length - 1; cnt < count; i--) {cnt += arr[i];}rightBegin = i + 1;// 分離第一個部分,并驗(yàn)證其與最后一個部分相同i = 0;while (arr[i] != 1) i++;int j = rightBegin;while (j < arr.length) {if (arr[i++] != arr[j++]) return new int[]{-1, -1};}// 分離中間部分,并驗(yàn)證其與最后一個部分相同leftEnd = i - 1;while (arr[i] != 1) i++;j = rightBegin;while (j < arr.length) {if (arr[i++] != arr[j++]) return new int[]{-1, -1};}midEnd = i;return new int[]{leftEnd, midEnd};} }

總結(jié)

以上是生活随笔為你收集整理的leetcode 927. Three Equal Parts | 927. 三等分(Java)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。