数据结构与算法
文章平均质量分 52
一枝会思想的芦苇
这个作者很懒,什么都没留下…
展开
-
LeetCode & 剑指offer 经典题目总结——字符串
目录1.验证回文串1.验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false解法:public class Solution {...原创 2019-05-05 11:24:34 · 723 阅读 · 0 评论 -
LeetCode & 剑指offer 经典题目总结——二叉树
目录1. 重建二叉树1. 重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解法:/** * Definition for binary tree * public class TreeNod...原创 2019-08-26 16:04:23 · 174 阅读 · 0 评论 -
LeetCode & 剑指offer 经典题目总结——递归
目录1. 字符串的排列1. 字符串的排列输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。解法:import java.util.ArrayList;import java.ut...原创 2019-08-25 21:08:53 · 210 阅读 · 0 评论 -
LeetCode & 剑指offer 经典题目总结——查找
目录1.搜索旋转排序数组1.搜索旋转排序数组假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: num...原创 2019-05-30 11:48:54 · 387 阅读 · 0 评论 -
LeetCode & 剑指offer 经典题目总结——贪心算法
目录1.加油站1.加油站在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度...原创 2019-04-24 15:31:01 · 658 阅读 · 0 评论 -
动态规划讲解
https://blog.csdn.net/u013309870/article/details/75193592原创 2019-03-29 10:08:31 · 161 阅读 · 0 评论 -
LeetCode & 剑指offer 经典题目总结——动态规划
目录1. 买卖股票的最佳时机1. 买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的...原创 2019-03-29 10:04:43 · 1366 阅读 · 0 评论 -
LeetCode & 剑指offer 经典题目总结——DFS、BFS、回溯
目录1. 被围绕的区域1. 被围绕的区域给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话...原创 2019-03-27 10:32:13 · 951 阅读 · 0 评论 -
LeetCode & 剑指offer 经典题目总结——数组
目录1. 插入区间1. 插入区间给出一个无重叠的,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例1:输入: intervals = [[1,3],[6,9]], newInterval = [2,5]输出: [[1,5],[6,9]]示例2:输入: intervals = [[1,2],[...原创 2019-03-26 10:33:01 · 189 阅读 · 0 评论 -
LeetCode & 剑指offer 经典题目总结——链表
目录1.重排链表2.链表中的环入口结点3.复制带随机指针的链表1.重排链表给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4-&原创 2019-03-13 10:51:06 · 442 阅读 · 0 评论 -
LeetCode & 剑指offer 经典题目总结——排序
目录一 、排序1.合并两个有序链表2.排序链表一 、排序1.合并两个有序链表/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * ...原创 2019-03-07 11:18:24 · 1248 阅读 · 0 评论 -
图
1无向图1.1无向图的表示无向图的API:实现:package graphs.undirectedgraph;import edu.princeton.cs.algs4.In;import fundamentals.Bag;public class Graph { private final int V;//顶点数目 private int E;//边的数目 ...原创 2018-11-16 16:51:40 · 1173 阅读 · 1 评论 -
查找
一种简单的泛型符号表的API:一种有序的泛型符号表的API1无序链表中的顺序查找1.1原理get()的实现即为遍历链表,用equals()方法比较需被查找的键和每个结点中的键。如果匹配成功就返回相应的值,否则返回null。put()的实现也是遍历链表,用equals()方法比较需被查找的键和每个结点中的键。如果匹配成功就用更新和该键相关联的值,否则我们就用给定的键值对创建一个新的结...原创 2018-10-28 23:04:51 · 166 阅读 · 0 评论 -
排序
1冒泡排序1.1原理1.2代码 package sorting; import java.util.Scanner; //冒泡排序 public class BubbleSort { public static void sort(Comparable[] a) { //将a按升序排列 int N=a.length; ...原创 2018-10-21 15:04:49 · 137 阅读 · 0 评论 -
并查集算法:quick-find、quick-union、优化的 quick-union
目录1. 问题描述2. quick-find3. quick-union4. 优化的 quick-union1. 问题描述可以想象一张地图上有很多点,有些点之间是有道路相互联通的,而有些点则没有。如果我们现在要从点 A 走向点 B,那么一个关键的问题就是判断我们能否从 A 走到 B 呢?换句话说,A 和 B 是否是连通的。这是动态连通性最基本的诉求。现在给出一组数据,其中每个元素都是一对“点”...原创 2019-09-04 11:02:36 · 2145 阅读 · 0 评论 -
为什么数组的起始索引是0而不是1?
《算法(第四版)》中的回答是: 这个习惯来源于机器语言,那时要计算一个数组元素的地址需要将数组的起始地址加上该元素的索引。将起始索引设为1要么会浪费数组的第一个元素的空间,要么会花费额外的时间来将索引减1。...原创 2018-03-11 21:32:44 · 7196 阅读 · 0 评论 -
数据结构与算法学习参考资料
以《算法》第四版为主,参考mooc公开课“数据结构与算法”(浙江大学陈越)。原创 2018-10-29 17:47:29 · 1404 阅读 · 0 评论