摘要:
判断一个数独是否合法,未填的空格用字符 ' . ' 表示。该数独有解并不是必要的。 e.g. 如图合法数独,输入 ["53..7....","6..195...",".98....6.","8...6...3","4..8.3..1","7...2...6",".6....28.","...419. 阅读全文
摘要:
给一个升序数组,找到目标值在数组中的起始和结束位置,时间复杂度为 O(log n)。 e.g. 给定数组 [5, 7, 7, 8, 8, 10] 和目标值 8,返回 [3, 4]。若目标值不在数组中,返回 [-1, -1]。 我使用最死的二分查找,分别搜索起始和结束位置。这种思路也可以使用递归实现。 阅读全文
摘要:
一、XML XML(Extensible Markup Language),可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言。 格式: 二、DOM4J DOM4J是一个非常优秀的Java XML API,具有性能优异、功能强大和易用的特点,同时它也是一个开放源代码的软件,Java中生成 阅读全文
摘要:
1. Next Permutation 实现C++的std::next_permutation函数,重新排列范围内的元素,返回按照 字典序 排列的下一个值较大的组合。若其已经是最大排列,则返回最小排列,即按升序重新排列元素。不能分配额外的内存空间。 全排列 Permutation 问题已经被古人研究 阅读全文
摘要:
C/C++数字范围(32位系统) 1. 整数除法 实现整数除法,不使用 * 、/ 、% 三个运算符。若结果越界,返回 INT_MAX。 原理: 假设计算 15 除以 3,15 是 dividend 被除数,3 是 divisor 除数。 “除法”需要知道 dividend 能够减去 divisor 阅读全文
摘要:
给定目标串 haystack 和模式串 needle ,返回 needle 在 haystack 中第一次出现的位置下标,若 needle 不是 haystack 的子串则返回 -1。 1. Brute-Force Algorithm(暴力算法 / 简单模式匹配) 我自己写了一种双层循环的 看了答案 阅读全文
摘要:
链表等复杂数据结构用多了,简单的数组操作也不能遗忘! 1. 给定一个有序数组,移除所有重复元素并返回新的数组长度,不能分配额外数组的内存空间。 e.g. 给定输入的数组 = [1,1,2],函数应当返回新长度 = 2,前 2 个元素为 1 和 2。超出新长度所剩下什么元素都无所谓,即新数组可以 = 阅读全文
摘要:
e.g. 给定链表 1->2->3->4,返回 2->1->4->3 的头节点。 我写了个常见的从头节点遍历,少量的奇数个或偶数个数据都能成功重新排列。但链表过长时结果显示 Time Limit Exceeded 。 看到有一个答案使用二级指针,忘了这种方法了! pp 从指向 head 指针到指向所 阅读全文
摘要:
实现一个栈,带有出栈(pop)、入栈(push)、取最小元素(getMin)三个方法,且时间复杂度均为O(1)。 初始想法: 这种方式进栈没有问题,而出栈时,若当前最小元素在栈顶并出栈了,用剩下哪个元素的下标顶替当前 min 就不得而知了。所以一旦最小元素的下标出栈,需要次小元素的下标作为备胎顶替, 阅读全文
摘要:
给定一个仅包含 '('、')'、'{'、'}'、'['、']'的字符串,确定输入的字符串是否合法。 e.g. "()"、"()[]{}"、"[()]([]({}))" 是合法的,而"(]"、"([)]" 是不合法的。 使用栈stack C++实现: 对应的Java实现: C++中的stack,其中有 阅读全文