剑指offer刷题 - day06
JZ29 用两个栈实现队列 这道题看着扑朔迷离,按着官方的题解来的,这删除时间复杂度是 O(n) package main import "fmt" var stack1 []int var stack2 []int func Push(node int) { stack1 = append(stack1, node) } func Pop() int { stack2
JZ29 用两个栈实现队列 这道题看着扑朔迷离,按着官方的题解来的,这删除时间复杂度是 O(n) package main import "fmt" var stack1 []int var stack2 []int func Push(node int) { stack1 = append(stack1, node) } func Pop() int { stack2
JZ76 删除链表中重复的结点 我的实现 package main import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param pHead ListNode类
JZ35 复杂链表的复制 刚开始我的思路是从头节点开始遍历,遍历过程中新建一个新的节点,如果原节点有 Random 指针,那么就新节点的 Random 指向原节点的 Random。然后原节点的 Next 指向新节点。 然后在遍历一遍新链表,如果节点存在 Random 指针,则使将 Random 指针重新指向原 Random 的 Next 就是新节点,p.Random=p.Random.Next
JZ23 链表中环的入口结点 我的思路 遍历节点,根据题意节点值范围在 1<=n<=10000 ,将遍历过的节点节点值取反,然后在循环过程中判断节点值是否为负,为负重新取正然后返回该节点。 package main /* type ListNode struct { Val int Next *ListNode } */ func EntryNodeOfLoop