原创 SAM模板整理

SAM填坑告一段落了(爲什麼代碼格式變了,高亮也亂七八糟的) https://paste.ubuntu.com/p/TTht5PVZww/ #include<bits/stdc++.h> using namespace std; typ

原创 1028. 從先序遍歷還原二叉樹

我們從二叉樹的根節點 root 開始進行深度優先搜索。 在遍歷中的每個節點處,我們輸出 D 條短劃線(其中 D 是該節點的深度),然後輸出該節點的值。(如果節點的深度爲 D,則其直接子節點的深度爲 D + 1。根節點的深度爲 0)

原创 1300. 轉變數組後最接近目標值的數組和

給你一個整數數組 arr 和一個目標值 target ,請你返回一個整數 value ,使得將數組中所有大於 value 的值變成 value 後,數組的和最接近 target (最接近表示兩者之差的絕對值最小)。 如果有多種使

原创 尋找兩個正序數組的中位數(困難)

題目鏈接 給定兩個大小爲 m 和 n 的正序(從小到大)數組 nums1 和 nums2。 請你找出這兩個正序數組的中位數,並且要求算法的時間複雜度爲 O(log(m + n))。 你可以假設 nums1 和 nums2 不會同時

原创 順時針打印矩陣(順時針螺旋打印二維數組)

題目描述 輸入一個矩陣,按照從外向裏以順時針的順序依次打印出每一個數字,例如,如果輸入如下4 X 4矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數字1,2,3,4,8,12,1

原创 跳臺階(斐波那契數列,遞歸)

題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 public class Solution { public int JumpFloor(i

原创 反轉鏈表(頭插法)

題目描述 輸入一個鏈表,反轉鏈表後,輸出新鏈表的表頭。 /* public class ListNode { int val; ListNode next = null; ListNode(int val

原创 變態跳臺階(思維/數學推導)

題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 思路:由題意可知,青蛙可以跳任意級(落腳點不超過n),每個臺階可以落上去,也可以不落上去,所以跳法就是2^(

原创 二進制中1的個數(位運算n&(n-1))

題目描述 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。 如果一個整數不爲0,那麼這個整數至少有一位是1。如果我們把這個整數減1,那麼原來處在整數最右邊的1就會變爲0,原來在1後面的所有的0都會變成1(如果最右邊

原创 數字在排序數組中出現的次數(兩次二分)

題目描述 統計一個數字在排序數組中出現的次數。 public class Solution { public int GetNumberOfK(int [] array , int k) { int l=0

原创 劍指offer彙總

數組 調整數組順序使奇數位於偶數前面(簡單操作) 順時針打印矩陣(順時針螺旋打印二維數組) 把數組排成最小的數(思維排序,Comparator) 第一個只出現一次的字符(hashmap/桶計數) 數組中只出現一次的數字(HashM

原创 二叉樹的下一個結點(模擬)

題目描述 給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指針。 思路:分析每種情況 1.有右子樹,下一節點是右子樹的最左結點 2.沒有右子樹,且該結

原创 對稱的二叉樹(遞歸判定)

題目描述 請實現一個函數,用來判斷一顆二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其爲對稱的。 /* public class TreeNode { int val = 0; TreeNo

原创 包含min函數的棧(棧模擬,構造一個最小值的棧)

題目描述 定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的min函數(時間複雜度應爲O(1))。 注意:保證測試中不會當棧爲空的時候,對棧調用pop()或者min()或者top()方法。 import java.u

原创 最小的K個數(優先級隊列)

題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 import java.util.*; public class Solution {