尋找陣列的中心索引
平時寫專案時,碰到演算法相關問題,都要思考許久,所以從現在開始堅持學習演算法,從易到難!主要目的學習演算法的思路!今天看下怎麼尋找一個陣列的中心索引,看下面示例
示例 1:
輸入:
nums = [1, 7, 3, 6, 5, 6]
輸出:3
解釋:
索引 3 (nums[3] = 6) 的左側數之和 (1 + 7 + 3 = 11),與右側數之和 (5 + 6 = 11) 相等。
同時, 3 也是第一個符合要求的中心索引。
示例 2:
輸入:
nums = [1, 2, 3]
輸出:-1
解釋:
陣列中不存在滿足此條件的中心索引。
我以為只能從排除第一項和最後項的位置去找中心索引位置,看到上面的結果我錯了,中心索引位置也可以是第一項和最後項!所以我的思路(還是很繁瑣),一開始在陣列的頭和尾加上兩個0,然後排除空陣列的情況(只有我加的2個0),然後一個從左邊開始算,一個從右邊開始算,左邊等於右邊輸出索引!
/**
* @param {number[]} nums
* @return {number}
*/
var pivotIndex = function(nums) {
let left = right = 0;
nums.push(left);
nums.unshift(right);
if (nums.length == 2) {
return -1;
};
for (let i = 0; i < nums.length - 2; i++) {
left = nums[i] + left;
for (let k = nums.length - 1; k > i + 1; k--) {
right = nums[k] + right;
}
if (left == right) {
return i;
} else {
right = 0;
}
}
return -1;
};
這個方法畢竟還是很複雜,多次判斷和多次迴圈!然後再想了下別的方法!假如一個陣列arr,leftNumber+leftNumber+arr[i]=arr總和,思路是陣列左邊+陣列右邊+中間索引位置的值 =陣列總和!這個方法程式碼量也很少!判斷也少!
/**
* @param {number[]} nums
* @return {number}
*/
var pivotIndex = function(nums) {
let totolNumber = nums.reduce(function (a, b) {
return a + b;
}, 0);
let leftNumber = 0;
for (var i = 0; i < nums.length; i++) {
if (totolNumber - nums[i] === 2 * leftNumber) {
return i;
}
leftNumber += nums[i];
}
return -1;
};
相關文章
- LeetCode每日一題:找陣列的中心索引(No.724)LeetCode每日一題陣列索引
- 【Java】尋找陣列中“主要元素”Java陣列
- 尋找陣列中第K大的元素陣列
- 尋找兩個有序陣列的中位數陣列
- 尋找陣列中和為定值的兩個數陣列
- 【.Net】從字串陣列中尋找數字的元素字串陣列
- 尋找兩個正序陣列中的中位數陣列
- 4. 尋找兩個正序陣列的中位數陣列
- (七)一個尋找陣列中眾數的演算法陣列演算法
- 在陣列中尋找和為指定值的兩個數陣列
- 演算法尋找陣列中的第二大數演算法陣列
- 153. 尋找旋轉排序陣列中的最小值排序陣列
- 尋找陣列中的最大值和最小值O(1.5*N)陣列
- LeetCode--尋找兩個有序陣列的中位數(05)LeetCode陣列
- LintCode 尋找旋轉排序陣列中的最小值 II排序陣列
- 153. 尋找旋轉排序陣列中的最小值(中)排序陣列
- 尋找兩個正序陣列的中位數問題,方法一:合併陣列檢索法陣列
- LeetCode第4題:尋找兩個有序陣列的中位數LeetCode陣列
- 數字之魅:尋找陣列中的最大值和最小值陣列
- java之陣列的索引,排序以及二維陣列Java陣列索引排序
- LeetCode-153-尋找旋轉排序陣列中的最小值LeetCode排序陣列
- 【LeetCode】153. 尋找旋轉排序陣列中的最小值LeetCode排序陣列
- 力扣演算法題:尋找兩個正序陣列的中位數力扣演算法陣列
- lgP5788 陣列中尋找右側第一個大於它的數陣列
- PHP 陣列搜尋 sdk & 陣列分頁PHP陣列
- 找陣列的波谷;及巧妙排序的分析陣列排序
- php關聯陣列和索引陣列差別PHP陣列索引
- [LeetCode 刷題] 4. 尋找兩個有序陣列的中位數 (Hard)LeetCode陣列
- GO實現:leetcode之尋找兩個正序陣列的中位數GoLeetCode陣列
- 找一個陣列中特別的數陣列
- 演算法找陣列中的特定元素演算法陣列
- DM7 陣列索引陣列索引
- LeetCode解題(C++)-4. 尋找兩個有序陣列的中位數LeetCodeC++陣列
- 【LeetCode Hot 100】4. 尋找兩個正序陣列的中位數LeetCode陣列
- js如何獲取指定陣列元素在陣列中的索引值JS陣列索引
- jQuery元素在陣列中的索引位置jQuery陣列索引
- js刪除陣列指定索引的元素JS陣列索引
- for迴圈訪問php的索引陣列PHP索引陣列