原创 思維導圖 --- 繼承,封裝,多態

傳送門: 繼承、封裝、多態.

原创 每日一題--LeetCode 25 (k個一組翻轉鏈表)java

題目描述: 給出一個鏈表,每 k 個節點一組進行翻轉,並返回翻轉後的鏈表。 k 是一個正整數,它的值小於或等於鏈表的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。 示例 : 給定這個鏈表:1->2->3->4->5

原创 java學習筆記(十二)-- 線程同步與死鎖

一 線程的同步   *************** 同步問題:每一個線程對象輪番搶佔共享資源帶來的問題 首先看一段代碼: class MyThread implements Runnable{ private int ticke

原创 每日一題--LeetCode 142 (環形鏈表II)java

題目描述: 解題思路: 如圖所示 , 當fast與slow相遇時,slow還沒走完鏈表,而fast已經在環內循環了n圈了,假設slow在相遇前走了s步,則fast走了2s步,設環長爲r,有2s=s+nr,即s=nr.由上圖可知a+x=s

原创 每日一題--LeetCode 58 (最後一個單詞的長度)java

題目描述: 解題思路:可以使用String類中的trim()方法(將字符串左右空格去掉)和charAt(index)(將字符串按照索引轉爲單個字符) 代碼如下: class Solution { public int leng

原创 java中的CAS操作以及鎖機制詳解

關於CAS操作 CAS:Compare And Swap   --  樂觀鎖策略 CAS(無鎖操作):使用CAS叫做比較交換來判斷是否出現衝突,出現衝突就重試當前操作直到不衝突爲止。 悲觀鎖(JDK1.6之前的內建鎖):假設每一次執行同步

原创 每日一題--LeetCode 234(迴文鏈表)java

題目描述: 請判斷一個鏈表是否爲迴文鏈表。 示例 1: 輸入: 1->2 輸出: false 示例 2: 輸入: 1->2->2->1 輸出: true 進階: 你能否用 O(n) 時間複雜度和 O(1) 空間複雜度解決此題? 解題

原创 java學習筆記(十一)-- 多線程(線程的基本概念 & 多線程的實現 & 多線程常用操作方法) **** 重要 ****

一 線程和進程概念及其區別 進程:OS中一個程序的執行週期 線程:進程中的一個任務,一個進程可以包含n個線程 進程:操作系統中一個程序的執行週期爲一個進程 進程線程區別 1.每個進程擁有自己的一整套變量,是操作系統中資源分配的最小單位。

原创 每日一題--LeetCode 28(實現strStr())java

題目描述: 代碼如下(附有解析): class Solution { public int strStr(String haystack, String needle) { //如果爲空直接返回0

原创 每日一題--LeetCode 141(環形鏈表)java

題目描述: 解題思路:快慢指針,若爲環形鏈表,那麼兩個指針一定會在鏈表某處相遇,若不是環形鏈表,那麼快指針一定會先走到空或者快指針的next指針爲空 代碼如下: /** * Definition for singly-linked

原创 每日一題--LeetCode 21 (合併兩個有序鏈表) java

題目描述: 代碼如下(附有解析): /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNod

原创 每日一題--LeetCode 53(最大子序和)java

題目描述: 代碼如下: class Solution { public int maxSubArray(int[] nums) { if(nums.length==1){ return

原创 每日一題--LeetCode 108(將有序數組轉化爲二叉搜索樹) java

題目描述: 解題思路:二叉搜索樹的特點是左子樹>根節點>右子樹,而且可以發現題目中所給的數字就是由二叉搜索樹中序遍歷得到,數組中間的值就爲根節點,以根節點爲劃分線左邊爲左子樹,右邊爲右子樹,然後採用二分和遞歸的思想重建二叉搜索樹即可;

原创 每日一題--LeetCode 2(兩數相加)java

題目描述: 代碼如下: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next

原创 每日一題--LeetCode 125 (驗證迴文串)java

題目描述: 解題思路:先將特殊情況考慮,比如字符串爲空或者字符串只有一個字符,然後可以將字符串中的字母都轉化爲大寫或小寫。自己編寫一個方法判斷該字符是否爲數字字符或者爲字母,再使用左右指針向中間掃描,當左右字符都爲字母或數字時判斷二者是