SJCHEN

时光,不会辜负每一个平静努力的人

0%

169. 多数元素

给定一个大小为 n的数组 nums,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

阅读全文 »

155. 最小栈

设计一个支持 pushpoptop操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop() 删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。
阅读全文 »

442. 数组中重复的数据

给你一个长度为 n的整数数组 nums,其中 nums的所有整数都在范围[1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。

你必须设计并实现一个时间复杂度为 O(n)且仅使用常量额外空间的算法解决此问题。

阅读全文 »

为了更容易(同时也更安全)地使用动态内存,新的标准库提供了两种智能指针类型来管理动态对象。智能指针的行为类似常规指针,最重要的区别是它负责自动释放所指向的对象。不需要考虑内存泄露。

shared_ptr允许多个指针指向同一个对象;

unique_ptr则独占所指向的对象;

标准库还定义了一个名为weak_ptr的伴随类,它是一种弱引用,指向shared_ptr所管理的对象。这三种类型都定义在memory头文件中。

阅读全文 »

236. 二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 pq,最近公共祖先表示为一个节点 x,满足 xpq的祖先且 x的深度尽可能大(一个节点也可以是它自己的祖先)。

阅读全文 »