Tag: 数据结构

C++ 编程练习题 – 找出第三大的数

题意: 给出一个数组, 求第三大的数字是多少, 重复的数字并不算在内, 比如 第3大的数字是1 而不是 2. Using std::set set 是集合, 是有序的(从小到大), 集合中不包含重复的元素, 所以我们可以遍历数组并把数字添加到集合中. 在这过程中, 如果集合大小大于三个, 就把最小的元素删除. 我们不能直接按照索引的访问集合中的元素, 但是我们可以用迭代器 rbegin() 和 begin() 来访问集合中最大和最小的元素. class Solution { public: int …

C++编程练习题: 对两单向链表求和

这题难度中等, 原因就是在实现的时候细节很多, 不容易一次性搞对. 还好这两个列表表示的整数是反过来的, 所以实现上可以边遍历边相加, 只需要在累加每一位的时候记得记住进位即可. C++单向列表定义如下: struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; 当然, 还有更笨的方法, 就是先把每个列表转换成数字, 然后想加再把结果换成列表. 我们需要创建一个dummy结点, 记住, 在函数返回的时候返回 dummy.next …

ACM题解系列之 – 最小堆栈 (Min Stack)

没事刷刷题能防止老年痴呆, 而且也能让你随时处于最佳状态, 随时都可以炒老板鱿鱼另谋高就. 题目: 设计一个堆栈(Stack)使 push, pop, 和取最小 min 操作时间复杂度都是 O(1). 这题的难点就是在于怎么样用O(1)常数时间复杂度来取得堆栈里的最小值. class MinStack { public: MinStack() { // write your code here } /* * @param number: An …

面经: Python 的 List 和 Dictionary 有啥区别?

问题: Python 的 List 和 Dictionary 有啥区别? 不许查资料, 你怎么回答这个面试题? 我不加思索的回答到: List 就像数组一样 而 Dictionary 是 键值对的一数据结构. 面试官继续说, 那么 Dictionary 是有序的么? 啥? 啥是有序? 我还是犹豫了一下, 说是无序的, 面试官说, 为什么? 我说, 因为 Python …

软件工程师面试技巧之 如何检查数独的有效性

前不久写的这个 软件工程师面试技巧 的系列, 朋友很喜欢, 所以我打算把我毕生所学(哈哈)整理整理分享于大家,望喜欢.另:我觉得:分享就是一种再学习的过程. 去年 Google 的面试题 – 打印消息 软件工程师面试技巧之 使用哈希表降复杂度 给定一个数独,我们要检查是否有效.一个有效的数独横的竖的都只出现1-9的数字各一次,并且9个小宫格里的数字也只出现1-9各一次. 你能快速的告诉我以下是否是个有效的数独么? 我们只需要检查给定的数独中已经填好的数字.最好的方法就是通过 C++中 STL 的 unordered_set (未排序的集合) 来保存已经出的数字.记得检查下一个9宫格或者行或列的时候清空集合便可. // https://justyy.com/archive/4998 class Solution { public: bool isValidSudoku(vector<vector<char>>& …