1. 程式人生 > >[leetCode刷題筆記]525. Contiguous Array

[leetCode刷題筆記]525. Contiguous Array

用類似動態規劃的思路來解決。

用HashMap是因為HashMap查詢key更快。

public class Solution {
    public int findMaxLength(int[] nums) {
        // change 0 to -1
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 0) nums[i] = -1; 
        }
        // key: sum from 0, value: index
        Map<Integer, Integer> sumMap = new HashMap<>();
        int max = 0;
        int sum = 0;
        sumMap.put(0, -1);
        for (int i = 0; i < nums.length; i++) {
            sum += nums[i];
            if (sumMap.containsKey(sum)) {
                max = Math.max(max, i - sumMap.get(sum));
            }
            else {
                sumMap.put(sum, i);
            }
        }
        return max;
    }
}


相關推薦

[leetCode筆記]525. Contiguous Array

用類似動態規劃的思路來解決。 用HashMap是因為HashMap查詢key更快。 public class Solution { public int findMaxLength(int[]

Leetcode記錄[python]——561 Array Partition I

partition span example ive 記錄 lan all [] result 一、前言 二、題561 Array Partition I Given an array of 2n integers, your task is to group the

leetcode筆記231 2的冪

show 判斷 clas 進制 OS 分析 分享 bsp gif 題目描述: 給定一個整數,寫一個函數來判斷它是否是2的冪。 題目分析: 判斷一個整數是不是2的冪,可根據二進制來分析。2的冪如2,4,8,等有一個特點: 二進制數首位為1,其他位為0,如2為10

leetcode筆記342 4的冪

close body order 分析 pow 位操作 pre none click 題目描述: 給定一個整數 (32位有符整數型),請寫出一個函數來檢驗它是否是4的冪。 示例:當 num = 16 時 ,返回 true 。 當 num = 5時,返回 false。

leetcode筆記191 位1的個數

none c++ open 二進制中1的個數 sed 二進制 aik HR while 題目描述: 編寫一個函數,輸入是一個無符號整數,返回其二進制表達式中數字位數為 ‘1’ 的個數(也被稱為漢明重量)。 示例: 輸入: 11 輸出: 3

LeetCode筆記-009:palindrome number(迴文數)

題目描述: Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward. Exa

LeetCode筆記-009:palindrome number(迴文數)

題目描述: Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward. Exa

LeetCode筆記-007-reverse integer

題目描述: Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Example 2: Input: -123 Output: -321

LeetCode筆記-001:two-sum

給定一個數組nums,一個目標值target,在陣列找兩個數滿足這兩個數的和為target。 返回這兩個數在nums中的下標。 example: nums = [2,7,11,15] target = 9 return [0,1] 題意分析: 在陣列中尋找兩個數a,b,使

Leetcode筆記python---二進位制求和

二進位制求和 題目 給定兩個二進位制字串,返回他們的和(用二進位制表示)。 輸入為非空字串且只包含數字 1 和 0。 示例 1: 輸入: a = “11”, b = “1” 輸出: “100” 示例 2: 輸入: a = “1010”, b = “1011” 輸出:

Leetcode筆記python---相對名次

相對名次 題目 給出 N 名運動員的成績,找出他們的相對名次並授予前三名對應的獎牌。前三名運動員將會被分別授予 “金牌”,“銀牌” 和“ 銅牌”(“Gold Medal”, “Silver Medal”, “Bronze Medal”)。 (注:分數越高的選手,排名越靠前。)

Leetcode筆記python---贖金信

贖金信 題目 給定一個贖金信 (ransom) 字串和一個雜誌(magazine)字串,判斷第一個字串ransom能不能由第二個字串magazines裡面的字元構成。如果可以構成,返回 true ;否則返回 false。 (題目說明:為了不暴露贖金信字跡,要從雜誌上搜索各個需要的

Leetcode筆記python---4的冪

4的冪 題目 給定一個整數 (32 位有符號整數),請編寫一個函式來判斷它是否是 4 的冪次方。 示例 1: 輸入: 16 輸出: true 示例 2: 輸入: 5 輸出: false 解答 思路: while 比較 程式碼:

Leetcode筆記python---位1的個數

位1的個數 題目 編寫一個函式,輸入是一個無符號整數,返回其二進位制表示式中數字位數為 ‘1’ 的個數(也被稱為漢明重量)。 示例 : 輸入: 11 輸出: 3 解釋: 整數 11 的二進位制表示為 00000000000000000000000000001011 示例

Leetcode筆記python---買賣股票的最佳時機

買賣股票的最佳時機 題目 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。 注意你不能在買入股票前賣出股票。 示例 1: 輸入: [7,1,5,3,6,4

Leetcode筆記——24,兩兩交換連結串列中的的節點(連結串列專題)關於連結串列的操作

由於最近在學c++,在看c++primer,所以leetcode做的題也不是很多了,這個題是很長時間做的,一直想寫一下部落格 但是一直沒來得及,現在我說一下我做這道題的思路: 首先我用的是左右指標來操作連結串列的,所以必須定義兩個指標即左指標和右指標,因此想定義一個左指標和右指標得

LeetCode筆記 6

題目: 答案: 對於所有整數 k, 1.行0中的字元位於索引k(2⋅numRows−2) 處; 2.行numRows−1 中的字元位於索引k(2⋅numRows−2)+numRows−1 處; 3.內部的行i中的字元位於索引k(2⋅numRows−2)+i 以及(k+1)(2⋅num

LeetCode筆記 5

題目:給定一個字串 s,找到 s 中最長的迴文子串。假設 s 的最大長度為 1000。 eg:輸入: “babad” 輸出: “bab” 注意: “aba” 也是一個有效答案。 輸入: “cbbd” 輸出: “bb” 迴文串就是一個正讀和反讀都一樣的字串 答案: 方法一:最長公共子串

LeetCode筆記 4

題目: 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 O(log(m + n))。假設 nums1 和 nums2 不會同時為空。 eg:nums1 = [1, 3] nums2 = [2] 則中位數是 2.0

LeetCode筆記 3

題目: 給定一個字串,找出最長的沒有重複字元的子字串的長度。 我的答案:(Java) 整體思路: 建立雜湊表,依次遍歷字串中的字元,雜湊表中有則去掉對應位及之前的鍵值,沒有則按續加入雜湊表。 第一次提交 import java.util.*; class Solution {