- 博客(6)
- 收藏
- 关注
原创 代码随想录第九天(补4.12)
让两个先进先出的队列分工明确,保证每次进行插入删除操作时,有一个队列为空,空的队列来进行操作。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(一个栈s1专门用作入栈,另一个栈s2专门用作出栈。
2024-04-15 16:29:02
205
1
原创 代码随想录第六天
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。注意:代码中的list 虽然存在内容相同不同堆内存地址的对象,但是set.add()方法判断的是对象的内容是否相同。对所有的排列组合而言, 有n* n* n* n 种,这里采取(n * n) * (n * n) 来减少for循环。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。
2024-04-09 22:56:44
1579
原创 代码随想录第五天
思路,使用HashMap 存入每一个 s 字符串的字符,如果存在则值加一,不存在则创建;思路:先遍历获取每一步每一位的值,然后把值加入 set 集合中,如果 set 中存在这个数,则说明原始值在算法中不断循环,即得不到1, 返回false。思路:该解法与上面 Map实现 一样,同样是遍历,但是解法考虑到字符的ASCII 值,因此可以创建固定长度的数组来解决问题。,使用快慢指针,考虑到如果存在循环,那么两个指针必定相遇,然后判断相遇的值即可。思路:在数组解法的基础上,可以通过判断,提前走出循环搜索。
2024-04-08 23:00:20
846
1
原创 代码随想录第四天 两两交换链表中的节点
思路:使用快慢指针,其中快指针先走 n 步, fast -slow = n , 但是题目要求删去第 n 个节点,所以让fast 多走一步(需要考虑fast 已经走到链表尾部,这种情况只需头节点后移一个节点即可),在这种情况下, fast 指向 null 的时候 , slow 指向 倒数 n+1 个节点,然后执行 slow.next = slow.next.next 即可删去第 n 个节点。1)如果节点长度减去待删除节点下标的值index == 0 ,说明删去的是第一个节点,直接返回head.next即可。
2024-04-08 14:15:01
2095
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人