
简单刷题
盐月球
龟速学习中...
展开
-
剑指offer 53 - 在排序数组中查找数字 I【HashMap&二分查找】
解题思路思路:查找数组中数字出现次数,第一想法就是用Java里的Map<K,V>,但这样没有用到数组已排序的特点,用二分查找可以借助数组排序的特点减少时间复杂度。在这里插入图片描述二分查找的时间复杂度是log(n)。因为已排序,只需要用两次二分查找,找到重复数字两边的下标并通过运算就能得到出现次数,运算方法根据找的位置不同而不同。ps.关于二分查找的理解可以看b站这个up的视频,很清晰易懂不容易出错!!【五点七边】二分查找为什么总是写错?代码-1【HashMap】class S原创 2022-03-11 23:16:35 · 1183 阅读 · 0 评论 -
剑指offer 35 - 复杂链表的复制
class Node { int val; Node next; Node random; public Node(int val) { this.val = val; this.next = null; this.random = null; }}public Node copyRandomList(Node head) { if(head==null)return null;//原链表为空.原创 2022-03-09 18:01:44 · 279 阅读 · 0 评论 -
链表倒置(C++&JAVA代码+思路)
链表倒置(C++&JAVA)调整指针倒置链表(C++实现):struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};class Solution {public: ListNode* ReverseList(ListNode* pHead) { if(pHead==NULL)return NULL;原创 2022-02-25 11:00:00 · 598 阅读 · 0 评论 -
剑指offer 30 - 利用辅助栈实现o(1)复杂度的输出最小值
##解题思路重点:栈a存数据,栈b存栈a各个长度时的最小值。如下:a: 1 0 -2 -1 0 0 3b: 1 0 -2 -2 -2 -2 -2可知——b.peek()=min易错点:1.push数据进a时,(非空)若进栈数据x小于当前min(b.peek()=min),则mins.push(x)。2.ab栈永远相同长度,pop时都要出栈数据。3.直接return s.peek()时会报空栈错误,需要再判断s.empty()?。代码class MinStack { Stack&原创 2022-02-24 11:55:30 · 247 阅读 · 0 评论