給定乙個鍊錶,判斷鍊錶中是否有環。
如果鍊錶中有某個節點,可以通過連續跟蹤 next 指標再次到達,則鍊錶中存在環。 為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鍊錶中沒有環。注意:pos 不作為引數進行傳遞,僅僅是為了標識鍊錶的實際情況。
如果鍊錶中存在環,則返回 true 。 否則,返回 false 。
高階:你能用 o(1)(即,常量)記憶體解決此問題嗎?
示例 1:
輸入:head = [3,2,0,-4], pos = 1
輸出:true
解釋:鍊錶中有乙個環,其尾部連線到第二個節點。
方法一 類似雜湊表 用map也可
var hascycle = function(head)
var set = new set();
while(head!=null)
set.add(head)
head=head.next;
}return false
};
方法二 快慢指標法
var hascycle = function(head)
var slow = head;
var fast = head.next;
while(slow !=fast)
slow = slow.next;
fast = fast.next.next;
}return true;
};
給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 null。
為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鍊錶中沒有環。注意,pos 僅僅是用於標識環的情況,並不會作為引數傳遞到函式中。
說明:不允許修改給定的鍊錶。
高階:你是否可以使用 o(1) 空間解決此題?
示例 1:
輸入:head = [3,2,0,-4], pos = 1
輸出:返回索引為 1 的鍊錶節點
解釋:鍊錶中有乙個環,其尾部連線到第二個節點。
var detectcycle = function(head)
}if(fast==null||fast.next==null)
slow = head;
while(slow!=fast)
return slow
};
方法二 雜湊 如果遇到一樣的節點,那麼說明這就是環的入口節點
var detectcycle = function(head)
set.add(head)
head=head.next;
}return null
};
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。
示例:給定乙個鍊錶: 1->2->3->4->5, 和 n = 2.
當刪除了倒數第二個節點後,鍊錶變為 1->2->3->5.
說明:給定的 n 保證是有效的。
高階:你能嘗試使用一趟掃瞄實現嗎?
var removenthfromend = function(head, n)
if(fast==null)
while(fast!=null && fast.next!=null)
slow.next=slow.next.next
return head;
};
給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。
函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。
說明:返回的下標值(index1 和 index2)不是從零開始的。
你可以假設每個輸入只對應唯一的答案,而且你不可以重複使用相同的元素。
示例:輸入: numbers = [2, 7, 11, 15], target = 9
輸出: [1,2]
解釋: 2 與 7 之和等於目標數 9 。因此 index1 = 1, index2 = 2 。
編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 char 的形式給出。
不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列、使用 o(1) 的額外空間解決這一問題。
你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。
示例 1:
輸入:["h","e","l","l","o"]
輸出:["o","l","l","e","h"]
示例 2:
輸入:["h","a","n","n","a","h"]
輸出:["h","a","n","n","a","h"]
var reversestring = function(s)
var cur = head;
var pre = null;
while(cur!=null)
return pre;
};
//遞迴法
var reverselist = function(head) ;
寒假刷雙指標《雙指標》
633.平方數之和 難度中等163 給定乙個非負整數c,你要判斷是否存在兩個整數a和b,使得a2 b2 c。示例 1 輸入 c 5輸出 true解釋 1 1 2 2 5示例 2 輸入 c 3輸出 false示例 3 輸入 c 4輸出 true示例 4 輸入 c 2輸出 true示例 5 輸入 c 1...
快慢指標 雙指標
雙指標 二 左右指標的常用演算法 鏈結 利用快慢指標 最開始slow與fast指標都指向鍊錶第乙個節點,前者解決主要解決鍊錶中的問題,listnode detectcycle listnode head slow head while slow fast return slow 設相遇點距環的起點的...
再談雙指標
再談雙指標 之前我寫過一篇部落格 深入理解雙指標 最近也再次重溫 c primer 讀到指標那一章節的時候,度c c 指標又有了新的領悟。c primer 中強調了乙個指標解引用的概念。究竟什麼是解引用呢?為了解釋解引用這個概念,我引用 c primer 中的一段話 when we derefere...