OUC_LiuX's Blog

为天地立心,为生民立命。
为往圣继绝学,为万世开太平。
虽未能至,心向往之。

Series Article of cpp -- 27

CMake 基本使用

由于我的 workflow 是从 github 上面 down 下来,mkdir build 后自行 cmake .. && make 编译的,既不是通过 apt 安装,也没有执行 make install,编译完的源码没有加入到 /usr/local/include 等系统路径,于是写自己的 workflow C++ 程序的时候没有办法直接 #include <wor...

Code Top -- 14 颠倒字符串中的单词

原地O(1),整体和单词两次翻转

from CodeTop, Leetcode, 151. 颠倒字符串中的单词。 两次翻转,这尼玛就不是人能想出来的。 题意: 示例 1: 输入:s = “the sky is blue” 输出:”blue is sky the” 示例 2: 输入:s = “  hello world  ” ...

Code Top -- 13 二叉树前序遍历迭代法

维护一个先右后左栈

from CodeTop, Leetcode, 144. 二叉树的前序遍历。 不要用递归,要用迭代实现。 解读: 维护一个栈,根节点先入栈,当栈非空: top() 节点值加入数组,当前节点的子节点先右后左入栈。这是由于元素出栈的时候按照先入后出规则,左节点后入栈,下一轮出栈的时候左节点在前。 代码: if...

Code Top -- 12 下一个排列

全文背诵

from CodeTop, Leetcode, 31. 下一个排列。 自己实现一个 STL algorithm 库的 std::next_permutation() 函数建议背过。 题意: 整数数组的一个 排列  就是将其所有成员以序列或线性顺序排列。 例如,arr = [1,2,3] ,以下这些都可以视作 arr 的...

Code Top -- 11 括号生成

全文背诵

from CodeTop, Leetcode, 22. 括号生成。 建议背过。 题意: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:[”((()))”,”(()())”,”(())()”,...

Code Top -- 10 链表排序

迭代归并,O(nlogn) + O(1)

from CodeTop, Leetcode, 148. 排序链表。 迭代归并。 题意: 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗? 解读: 要求时间复杂度 O(nlogn)...

Code Top -- 09 第一个缺失的正整数

第一个缺失的正整数

from CodeTop, Leetcode, 41. 缺失的第一个正数。 原地哈希。 题意: 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1: 输入:nums = [1,2,0] 输出:...

Code Top -- 08 寻找旋转排序数组中的最小值 II

寻找旋转排序数组中的最小值 II

from CodeTop, Leetcode, 154. 寻找旋转排序数组中的最小值 II。 二分查找。 题意: 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 ...

Series Article of Algorithm and Data Structure -- 08

全排列问题中的递归回溯思想

from LeetCode , 46. 全排列 一道非常经典的递归回溯问题,可以当做模板背下来。 题目如下: 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2...

Series Article of Algorithm and Data Structure -- 07

理解二分本质及代码

from LeetCode , 33. 搜索旋转排序数组 题目如下: 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums...