Remove nth node from end of list

LeetCode 19 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明 给定的 n 保证是有效的。 进阶 你能尝试使用一趟扫描实现吗? 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int……

阅读全文

Paper for writing algorithm questions

P20 10. 基本设计思想 从第1个元素开始,依次遍历R[p]之前的所有元素,将其有序插入数组的末尾。从 R[p]开始向后遍历所有元素,依次将其往前移动p个位置。 算法描述 void leftShiftArray(vector<int> R, int p) { // 从第1个元素开始,依次遍历R[p]之前的所有元素,将其有序插入数组的末尾 for(int i=0,j=R.size(); i<p; i++,j++) { R[j] = R[i]; }……

阅读全文

Double pointer tips

数组 双指针技巧1 同步指针 例题 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例……

阅读全文

Length of last word

LeetCode 58 最后一个单词的长度 给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。 如果不存在最后一个单词,请返回 0 。 说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。 示……

阅读全文

Merge sorted array

LeetCode 88 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 说明 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 输出: [1,2,2,3,5,6] 代码 class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2,……

阅读全文

Valid parentheses

LeetCode 20 给定一个只包括 ‘(',')','{','}','[',']’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1 输入: “()” 输出: true 示例 2……

阅读全文

Search Insert Position

LeetCode 35 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1 输入: [1,3,5,6], 5 输出: 2 示例 2 输入: [1,3,5,6], 2 输出: 1 示例 3 输入: [1,3,5,6], 7 输出: 4 示例 4 输入: [1,3,5,6], 0 输出: 0 代码 class Solution { public:……

阅读全文

Remove element

LeetCode 27 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的……

阅读全文

Longest common prefix

LeetCode 14 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “"。 示例 1 输入: [“flower”,“flow”,“flight”] 输出: “fl” 示例 2 输入: [“dog”,“racecar”,“car”] 输出: "” 解释: 输入不存在公共前缀。 说明 所有输入只包含小写字母 a-z 。 解析 依次遍历字符串数组中的每个字符串,对于每个遍历……

阅读全文

ES6 notes

let 关键字允许你声明一个作用域被限制在块级中的变量、语句或表达式。 let 与 var 关键字的区别 (1)var 声明的变量只能是全局或者整个函数块的,let将变量的作用域限制在块内({…}内)。 (2)var 声明的变量会提升,let 不存在变量提升。变量提升即变量可以……

阅读全文