通過本篇文章你將了解到一下內(nèi)容:
- Algorithm leetcode 206.反轉(zhuǎn)鏈表
- Review 使用Java創(chuàng)建第一個區(qū)塊鏈 Part1
- Tip Mysql索引背后的數(shù)據(jù)結(jié)構(gòu)與算法原理
- Share 數(shù)據(jù)結(jié)構(gòu)可視化網(wǎng)站
Algorithm leetcode 206.反轉(zhuǎn)鏈表
題目描述:
輸入一個鏈表,反轉(zhuǎn)鏈表后尊搬,輸出新鏈表的表頭
設(shè)置三個指針垮媒,head為當前節(jié)點畴博,pre為當前節(jié)點的前一個節(jié)點恋追,next為當前節(jié)點的下一個節(jié)點,需要pre和next的目的是讓當前節(jié)點從pre->head->next1->next2變成pre<-head next1->next2的過程中喊崖,用pre讓節(jié)點反轉(zhuǎn)所指方向饲化,next節(jié)點保存next1節(jié)點防止鏈表斷開
需要注意的點:
1、如果輸入的頭結(jié)點是null金蜀,則返回null
2刷后、鏈表斷裂的考慮
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null || head.next == null)
return head;
ListNode pre = null;
ListNode next = null;
while(head != null){
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
}
Review 使用Java創(chuàng)建第一個區(qū)塊鏈 Part1
這不是一個功能齊全的生產(chǎn)區(qū)塊鏈。相反渊抄,這是一個概念驗證實現(xiàn)尝胆,可幫助您了解區(qū)塊鏈對于未來教程的作用。
1护桦、區(qū)塊鏈只是一個鏈/列表塊含衔。區(qū)塊鏈中的每個區(qū)塊都有自己的數(shù)字簽名,包含前一個區(qū)塊的數(shù)字簽名,并且有一些數(shù)據(jù)(例如贪染,這些數(shù)據(jù)可能是交易)缓呛。
2、使用applySha256助手杭隙,在Block 類的新方法中計算哈希值哟绊。我們必須計算我們不想被篡改的塊的所有部分的哈希值。
4痰憎、將塊存儲在ArrayList中票髓,并導入gson以將其視為Json
5、創(chuàng)建一個isChainValid() 布爾方法铣耘,它將遍歷鏈中的所有塊并比較哈希值炬称。此方法需要檢查哈希變量實際上是否等于計算的哈希值,并且前一個塊的哈希值等于previousHash變量涡拘,對區(qū)塊鏈塊的任何更改都將導致此方法返回false玲躯。
6、對區(qū)塊鏈塊的任何更改都將導致此方法返回false鳄乏。
您的區(qū)塊鏈:
由存儲數(shù)據(jù)的塊組成跷车。
具有將您的塊鏈接在一起的數(shù)字簽名。
需要工作挖掘證明來驗證新塊橱野。
可以檢查其中的數(shù)據(jù)是否有效且未更改朽缴。
您可以在Github上下載這些項目文件。
Tip Mysql索引背后的數(shù)據(jù)結(jié)構(gòu)與算法原理
MySQL索引背后的數(shù)據(jù)結(jié)構(gòu)及算法原理
很不錯的一篇文章,對于想快速的對mysql有一定了解很有幫助
Share 數(shù)據(jù)結(jié)構(gòu)可視化
這個網(wǎng)站提供數(shù)據(jù)結(jié)構(gòu)可視化演示,都會采用動畫的進行增刪改查進行演示贼急,最主要的是還提供了js的源碼,可供查看或渤。對于有時間這看看源碼也是不錯的選擇