原创 字母異位詞分組

給定一個字符串數組,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字符串。 示例: 輸入: ["eat", "tea", "tan", "ate", "nat", "bat"], 輸出: [   ["ate","eat","t

原创 java全排列

給定一個沒有重複數字的序列,返回其所有可能的全排列。 示例: 輸入: [1,2,3] 輸出: [   [1,2,3],   [1,3,2],   [2,1,3],   [2,3,1],   [3,1,2],   [3,2,1] ] 我的思

原创 如何原地旋轉矩陣

給定一個 n × n 的二維矩陣表示一個圖像。 將圖像順時針旋轉 90 度。 說明: 你必須在原地旋轉圖像,這意味着你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉圖像。 思路:經過觀察發現,旋轉矩陣有兩種方法:一種是將矩陣分層

原创 接雨水問題

給定 n 個非負整數表示每個寬度爲 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。 上面是由數組 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種情況下,可以接 6 個單位的雨水(藍色部分表示雨水

原创 缺失的第一個正數

給定一個未排序的整數數組,找出其中沒有出現的最小的正整數。要求算法時間複雜度O(n),空間複雜度常數級別。 示例1: 輸入:[1,2,0] 輸出:3 示例2: 輸入:[3,4,-1,1] 輸出:2 示例3: 輸入:[7,8,9,10] 輸

原创 組合總和(combinationSum)以及List的add()方法的問題

給定一個無重複元素的數組 candidates 和一個目標數 target ,找出 candidates 中所有可以使數字和爲 target 的組合。 candidates 中的數字可以無限制重複被選取。 說明: 所有數字(包括 targ

原创 組合總和②

給定一個數組 candidates 和一個目標數 target ,找出 candidates 中所有可以使數字和爲 target 的組合。 candidates 中的每個數字在每個組合中只能使用一次。 說明: 所有數字(包括目標數)都是正

原创 查詢後的偶數和

給出一個整數數組 A 和一個查詢數組 queries。 對於第 i 次查詢,有 val = queries[i][0], index = queries[i][1],我們會把 val 加到 A[index] 上。然後,第 i 次查詢的答案

原创 區間列表的交集計算

給定兩個由一些閉區間組成的列表,每個區間列表都是成對不相交的,並且已經排序。 返回這兩個區間列表的交集。 (形式上,閉區間 [a, b](其中 a <= b)表示實數 x 的集合,而 a <= x <= b。兩個閉區間的交集是一組實數,要

原创 最長有效括號

給定一個只包含'('和')'的字符串,找出最長的包含有效括號的子串的長度。 如:輸入“(()”,輸出2;輸入")()())",輸出4. 思路:兩個for循環掃描字符串,用棧檢測是否有合格串。 我的代碼: public class Lon

原创 在排序數組中查找元素的第一個和最後一個位置

給定一個按照升序排列的整數數組 nums,和一個目標值 target。找出給定目標值在數組中的開始位置和結束位置。 你的算法時間複雜度必須是 O(log n) 級別。 如果數組中不存在目標值,返回 [-1, -1]。 示例: 輸入:num

原创 生成括號

這道題有點意思。 給出 n 代表生成括號的對數,請你寫出一個函數,使其能夠生成所有可能的並且有效的括號組合。 例如,給出 n = 3,生成結果爲:[((())), (()()), (())(), ()(()), ()()()]。   我的

原创 關於List值傳遞還是引用傳遞的問題

首先可以確定的是,JAVA的List是引用傳遞,也就是說在作爲參數傳遞進去list和原來的list指向同一空間,互相影響。 但仍有些地方需要注意。 通過代碼解釋: 代碼一: public void test() { List<Str

原创 兩兩交換兩個相鄰節點

給定一個鏈表,兩兩交換其中相鄰的節點,並返回交換後的鏈表。 如:給定1->2->3->4,返回2->1->4->3。 說明: 你的算法只能使用常數的額外空間。 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。   方法一:交

原创 電話號碼的字母組合

給定一個僅包含數字2-9的字符串,返回所有它能表示的字母組合。 給出數字到字母的映射關係如下: 示例: 輸入:“23” 輸出:["ad","ae","af","bd","be","bf","cd","ce","cf"] 注:輸出字符串順