1. 程式人生 > >陣列平衡點演算法研究

陣列平衡點演算法研究

        前些天筆者的一位朋友參加面試,參加筆試的時候碰到了一道求二維陣列平衡線的演算法題,題目是要這樣子:

        給你一個二維陣列,要求打印出所有平衡線的index序號,平衡線的意思是:這個線上面的所有數和下面的所有數之和相等,如:

        二維陣列:int[][] a = new int[][]{{1,1},{1,2},{1,1},{3,2}};

        1 1

        1 2

        1 1  -------> 平衡線

        3 2

        怎麼解決這個問題呢,那我們先換個思路,先來找找一維陣列的平衡點,平衡點就是指這個點之前的所有數之和等於這個點之後的所有數之和。

        思路是這樣子的:先算出一維陣列每個index之前各個數之和(包括index) 去覆蓋掉這個一維陣列, 然後遍歷這個陣列,如果某個index前面的那個index值等於陣列之和減去

        這個index的值,那這個index就是一個平衡點。演算法程式碼如下:

        

            演算法的時間複雜度為O(n)

            現在我們繼續回到二維陣列的平衡線問題上面,解決了一維陣列的平衡點問題,那解決二維陣列的平衡線問題就很簡單了,把二維陣列轉化為一維陣列不就解決了這個              問題,演算法程式碼如下:

           

              演算法時間複雜度為O(n^2),

              歡迎大家提出更好的演算法實現

相關推薦

陣列平衡點演算法研究

        前些天筆者的一位朋友參加面試,參加筆試的時候碰到了一道求二維陣列平衡線的演算法題,題目是要這樣子:         給你一個二維陣列,要求打印出所有平衡線的index序號,平衡線的意思是:這個線上面的所有數和下面的所有數之和相等,如:         二維

陣列平衡點演算法

/** * 陣列平衡點 * * @param array 資料來源 * @return 返回平衡點,沒有返回-1 可能存在多個 */ private static int[] balancePoint(int array[])

raid陣列算法研究+raid數據恢復案例

我們 工具 RoCE 硬盤 根據 mage 一個 watermark 分布式 Raid5數據恢復算法原理 要理解 raid5數據恢復原理首先要先認識raid5,“分布式奇偶校驗的獨立磁盤結構”也就是我們稱之為的raid5數據恢復有一個概念需要理解,也就是“奇偶校驗”。我們可

colletion知識點之集合的遍歷(轉陣列遍歷研究

建立collection物件後: Collection c = new ArrayList(); 採用方法 Object  toArray()的方法,返回是一個Object型的集合中所有元素的值。 注意問題: 我定義了一個集合 Collection c = new ArrayList();

文字分類——NLV演算法研究與實現

內容提要 1 引言 2 NLV演算法理論 2.1 訓練模型 2.2 分類模型 3 NLV演算法實現 3.1 演算法描述 4 實驗及效能評估 4.1 實驗設計 4

特徵選擇——Matrix Projection演算法研究與實現

內容提要 引言 MP特徵選擇思想 MP特徵選擇演算法 MP特徵選擇分析 實驗結果 分析總結 引言   一般選擇文字的片語作為分類器輸入向量的特徵語義單元,而作為單詞或詞語的片語,在任何一種語言中都有數萬或數十萬個。另外

演算法是什麼(一)陣列演算法記錄

演算法是什麼(一)陣列的演算法記錄   liuyuhang原創,未經允許禁止轉載     從入門一個一個來吧,先說陣列的演算法:   1、求極值   int[] arr01 = { 1, 3, 5, 76, 23, 44

LeetCode--陣列演算法--刪除排序陣列中的重複項

給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。 不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。 示例 1: 給定陣列 nums = [1,1,2], 函式應該返回新的長度 2

LeetCode--陣列演算法--刪除排序陣列中的重複項 II

給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素最多出現兩次,返回移除後陣列的新長度。 不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。 示例 1: 給定 nums = [1,1,1,2,2,3], 函式應返回新長度

把兩個有序數組合併成一個有序陣列演算法複雜度O(N)

/** * */ /** * @author jueying: * @version 建立時間:2018-10-22 下午01:32:44 * 類說明 */ /** * @author jueying * */ public class Test4 {

全部博文集錦第三期CHM檔案,及十三個經典演算法研究PDF文件

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

機器學習 (七) 決策樹演算法研究與實現

前言        從決策樹這三個字中我們既可以看出來它的主要用途幫助決策某一類問題,樹是輔助我們來決策用的,如下圖一個簡單的判斷不同階段人年齡的圖:       &

合併兩個整型有序陣列為一個新的有序陣列演算法

面試中,經常會問到演算法問題,比如如何合併兩個有序的整型有序陣列,使之變成一個有序陣列。 我的程式碼如下: 1 package com.company.algorithm; 2 3 import java.util.Arrays; 4 5 /** 6 * 合併兩個有序陣列 7

js陣列迴圈的研究

為什麼會寫這個? 同事的疑問 let a = [] a[5] = 1 console.log(a.length) a.forEach(function(item) { console.log(item); }); 結果是這樣的 按理來說,不是應該迴圈6次的麼,是不是迴圈的方法不對,我們試試用其他的

陣列排序演算法

進行排序,方便統計與查詢 1、氣泡排序 思想: 氣泡排序:總是將小數往前放,大數往後放,反之亦然,對不比相鄰的元素值,如果滿足條件就交換位置,把較小的元素移動到陣列前面,把較大的元素移動到陣列的後面(也就是交換資料),這樣較小的元素就像氣泡一樣從底部上升到頂部 實現: p

測量人臉顏值的標準有哪些,人臉影象演算法研究(2)

今天帶來一篇人臉識別中的顏值打分技術,所謂“顏值”,基於什麼標準來評判高低呢?既然是個“數值”,那到底能不能“測量”一下? 概述 近年來隨著人臉識別技術的發展,顏值打分也受到了廣泛的關注與研究。可即使人來打分,大家也口味各異,御姐蘿莉各有所愛。計算機又豈能判

【電腦科學】【2016.10】多目標優化的模擬退火演算法研究

本文為英國埃克塞特大學(作者:Kevin Ian Smith)的電腦科學博士論文,共137頁。 許多應用領域的計算優化問題都歸結為多目標優化問題,從而達到最小化或最大化的目的。如果(通常情況下)這些目標都是相互競爭的目標,則優化的目的是找出一組合適的解決方

最簡單的自動控制PID演算法研究

PID的流程簡單到了不能再簡單的程度,通過誤差訊號控制被控量,而控制器本身就是比例、積分、微分三個環節的加和。這裡我們規定(在t時刻):    1.輸入量為rin(t);    2.輸出量為rout(t);    3.偏差量

陣列排序演算法之氣泡排序

一、基本思想 氣泡排序的基本思想就是對比相鄰的元素值,如果滿足條件就交換元素值,把較小的元素移動到陣列的前面,把大的元素移動到陣列後面(也就是交換兩個元素的位置),這樣較小的元素就像氣泡一樣從底部上升

leetcode 53. Maximum Subarray 最大子陣列 分治演算法

題目 給定一個整數陣列,找出和最大的連續子陣列(至少包含一個元素)並返回最大和。 嘗試使用分治演算法實現 思路 參考了《演算法導論》裡關於分治的講解,正好就是這個題目,不過它的方法比較細緻,把最大子陣列的位置也求出來了。這道題只要求最大和,我簡化了一下。思路是