包含标签 data structures and algorithms 的文章

Implement stack using queues

LeetCode 225 使用队列实现栈的下列操作 push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 注意 你只能使用队列的基本操作– 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 你所使用的语言也许不支……

阅读全文

Implement queue using stacks

LeetCode 232 使用栈实现队列的下列操作 push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 示例 MyQueue queue = new MyQueue(); queue.push(1); queue.push(2); queue.peek(); // 返回 1 queue.pop(); // 返回 1 queue.empty(); // 返回 false 说明 你只能使用标准的栈操……

阅读全文

Contains duplicate submissions

LeetCode 217 给定一个整数数组,判断是否存在重复元素。 如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 示例 1 输入: [1,2,3,1] 输出: true 示例 2 输入: [1,2,3,4] 输出: false 示例 3 输入: [1,1,1,3,3,4,3,2,4,2] 输出: true 代码 class……

阅读全文

Reverse linked list

LeetCode 206 反转一个单链表。 示例 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* reverseList(ListNode* head) { if(head == NULL) { return head; } ListNode* dummyNode = new ListNode(0); dummyNode->next =……

阅读全文

Remove nth node from end of list

LeetCode 19 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明 给定的 n 保证是有效的。 进阶 你能尝试使用一趟扫描实现吗? 代码 /** * Definition for……

阅读全文

Double pointer tips

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

阅读全文

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 中的元素。 示例 输入……

阅读全文

Valid parentheses

LeetCode 20 给定一个只包括 ‘(',')','{','}','[',']’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注……

阅读全文

Search insert position

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

阅读全文