原创 Raft 學習心得

Raft 算法: ​ Raft是工程上使用較爲廣泛的強一致性、去中心化、高可用的分佈式協議。(在學術理論界最耀眼的還是Paxos,但是他比較難理解。) Raft is a consensus algorithm for man

原创 二叉樹的左(右)視圖

static void LeftView(TreeNode node) { Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.off

原创 雜題分享--部分翻轉字符串

* 描述: * 給定一個字符串str和長度leftsize, * 請把str左側leftsize的部分和右部分做整體交換。要求額外空間複雜度O(1)。 * 例如: * 輸入: abcde 3 * 輸出: deabc * 輸

原创 leetcode 48 旋轉圖像

給定一個 n × n 的二維矩陣表示一個圖像。 將圖像順時針旋轉 90 度。 說明: 你必須在原地旋轉圖像,這意味着你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉圖像。 示例 1: 給定 matrix = [

原创 leetcode 7 整數反轉

給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。 示例 1: 輸入: 123 輸出: 321  示例 2: 輸入: -123 輸出: -321 示例 3: 輸入: 120 輸出: 21 注意: 假設我們

原创 leetcode 179 最大數

給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。 示例 1: 輸入: [10,2] 輸出: 210 示例 2: 輸入: [3,30,34,5,9] 輸出: 9534330 說明: 輸出結果可能非常大,所以你需要返回一個

原创 給定一個節點,找出它是第幾層第幾個!

import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; public class Main { public stat

原创 兩個數組相加

輸入: 123 123 輸出:456 輸入: 9 9 輸出: 18 public class Main { public int[] add(int[] a, int[] b) { if (a.length

原创 找出二叉樹每層的最大值節點

import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; public class Main { public stat

原创 鏈表翻轉

反轉一個單鏈表。 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL //非遞歸 public ListNode reverseList(ListNode head) { L

原创 快排非遞歸

import java.util.Arrays; public class TestQuickSort { public static int partion(int []array,int low,int hign){

原创 二叉樹的左視圖

static void LeftView(TreeNode node) { Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.off

原创 反轉從位置 m 到 n 的鏈表

反轉從位置 m 到 n 的鏈表。請使用一趟掃描完成反轉。 說明: 1 ≤ m ≤ n ≤ 鏈表長度。 示例: 輸入: 1->2->3->4->5->NULL, m = 2, n = 4 輸出: 1->4->3->2->5->NULL c

原创 二叉樹的層次遍歷帶Level

class Solution { List<List<Integer>> levels = new ArrayList<List<Integer>>(); public void helper(TreeNode nod

原创 leetcode 25 k個一組翻轉鏈表

給你一個鏈表,每 k 個節點一組進行翻轉,請你返回翻轉後的鏈表。 k 是一個正整數,它的值小於或等於鏈表的長度。 如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。 class Solution { pu