数据结构与算法
数据结构与算法编程题
LoongTech
我爱学习 学习爱我
展开
-
二叉树的序列化与反序列化
为了方便自己测试二叉树相关的代码,需要根据层序遍历快速反序列化一颗用于测试的二叉树,这样可以很方便的写测试用例。因此简单梳理一下基于层序遍历的二叉树的序列化问题。LintCode地址:https://www.lintcode.com/problem/serialize-and-deserialize-binary-tree/description举例说明:序列化过程与层次遍历相同的是...原创 2019-09-10 09:53:15 · 530 阅读 · 0 评论 -
[动态规划][公共子串]最长公共子串、最长公共子序列
1、最长公共子串LintCode:https://www.lintcode.com/problem/longest-common-substring/description题目描述:最长公共子串给出两个字符串,找到最长公共子串,并返回其长度。样例样例 1:输入: “ABCD” and “CBCE”输出: 2解释:最长公共子串是 “BC”样例 2:输入: “ABCD” an...原创 2019-09-10 01:40:11 · 225 阅读 · 0 评论 -
[回文系列] 回文数、最长回文子串、最长回文子序列
1、验证回文数LintCode:https://www.lintcode.com/problem/palindrome-number/description题目描述:判断一个正整数是不是回文数。回文数的定义是,将这个数反转之后,得到的数仍然是同一个数。样例例1:输入:11输出:true例2:输入:1232输出:false解释:1232!=2321注意事项给的数一定保证是...原创 2019-09-10 00:43:56 · 560 阅读 · 0 评论 -
两数之和、三数之和、四数之和、K数之和
两数之和、三数之和、四数之和和K数之和是最近听室友提起的几道有意思的基础题,可以说是把双指针运用的淋漓尽致。(K数之和其实是一个动态规划的题,此处因为满足*数之和的的结构,放在一起对比提一下)。1、两数之和等于Target的下标LintCode:https://www.lintcode.com/problem/two-sum/题目描述:给一个整数数组,找到两个数使得他们的和等于一个给定的数 ...原创 2019-08-31 14:07:46 · 7081 阅读 · 3 评论 -
数据流中的中位数
题目描述中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。示例:addNu...原创 2019-08-09 18:09:33 · 268 阅读 · 0 评论 -
[剑指offer][JAVA]把数组排成最小的数
题目描述:剑指offer45输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。线上答题:牛客网JAVA解法import java.util.*;public class Solution { public String PrintMinNumber(int...原创 2019-07-27 16:47:56 · 124 阅读 · 0 评论 -
[剑指offer]重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * public class TreeNode { * int val; * ...原创 2019-07-17 20:22:33 · 79 阅读 · 0 评论 -
单例模式Singleton
1.什么是单例模式1.1 初略感知单例模式最初的定义出现于《设计模式》(艾迪生维斯理, 1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点。”Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”1.2 举例说明举个例子,在很多情况下,环境的条件要求我们必须有且只有一个实例。比如说一个打印机,同一时间只能打印一个文件,那么就需要这么一个只有一个...原创 2019-03-05 09:52:17 · 134 阅读 · 0 评论 -
[leetcode]Single Number III
趁热打铁,在[leetcode]Single Number的来来往往的基础上怒刷Single Number III。首先贴几篇参考的文章,主要是关于分组处理的思路的。1.博客专家jamesehng的解析,内容非常易懂,code段位高。2.易羽fxst的解析,内容简单平实,如果喜欢相对平实风格的代码,可以参考。3.yijingzhi的CSDN文章,提到了一种基于排序的思路。同时也有基于连续按...原创 2018-10-06 00:03:15 · 128 阅读 · 0 评论 -
[leetcode]Single Number的来来往往
Single Number是一个位操作(Bit Operation)系列的题目,对于像我这种之前对bit Operation接触不是太多的同学,看到很多博客一笔带过的解析可能很懵。下面一起先易后难,从Single Number到Single Number II,逐步拨云见日。文章目录1.Single Number2.single Number II2.1 思路分析2.2 解法一2.3 解法二2....原创 2018-10-05 23:34:57 · 1647 阅读 · 0 评论 -
最小生成树-Prim算法和Kruskal算法
https://www.cnblogs.com/biyeymyhjob/archive/2012/07/30/2615542.html 以上博文非常棒,讲的非常清楚。先挖坑,考试完再补解析。转载 2018-01-02 10:17:16 · 231 阅读 · 0 评论 -
100个白球100个黑球,取出两个球,同色则补充黑色,异色则补充白色。最后剩什么颜色
【题目描述】桶中取黑白球有一个桶,里面有白球、黑球各100个,人们必须按照以下规则把球取出来:1、每次从桶中那两个球2、如果是两个同色的球,那就再放入一个黑球3、如果是两个异色的球,那就再放入一个白球问:最后桶里面最后剩下一个球是白球和黑球的概率各是多少。【思路解析】思路一:归纳总结依靠枚举的思路,比如假设黑白球各10个、5个、2个等来分析和推断,然后找规律。分析过程可以参考《...原创 2019-10-13 14:22:30 · 2770 阅读 · 0 评论 -
有序数组中的二分查找
二分查找又叫折半查找,要求数组/序列满足一定的有序性,根据某些判断条件不断缩小查找的范围。因为每次范围缩小为原来的一半,所以叫二分或者折半。通过七道例题理解并掌握二分法的使用。原创 2019-08-23 01:44:25 · 3992 阅读 · 0 评论 -
[算法题讨论]超大组合数的求解
题目说明题目来源是一场笔试,第一次笔试慌慌张张,考场中并没有做出来。以上不表。直接看题:两个人小王和小李玩石头剪刀布的游戏。一共玩n次。小王赢一次的一份,输了不扣分。如果小王得到s分,且已知小李出拳顺序,求小王可能的出拳组合总数。输入:游戏场数n,小王游戏得分s,小李的出拳顺序数组p在数组p中,0代表石头,1代表布,2代表剪刀。输入样例:3 20 1 2输出:可能组合的数目对1e9...原创 2019-03-10 13:51:45 · 1231 阅读 · 0 评论 -
快速排序那点事(中)
本文主要对快速排序那些事(上)中提出的若干思考题进行解析。很多人对快速排序的基本过程了如指掌,但不一定能够很快、很清晰、很准确的考虑以下的思考题。 思考题: (1).为什么首先只能是j先移动? (2).i和j移动的范围在哪里? (3).如果i或者j没有找到不符合要求的值怎么处理? (4).分而治之的思想体现在哪里? (5).递归调用具体使用在哪里?有哪些注意事...原创 2018-03-06 11:04:47 · 399 阅读 · 0 评论 -
快速排序那点事(上)
快速排序很多博客多讲,很多书都写。图解快速排序可以让我们很快了解快速排序的步骤。此文借助图解、通过具体可用代码讲解快速排序,通过解析快速排序算法中需要注意的问题。纵观目前常用的快速排序的实现方法,可以大致分为两种:互换模式快速排序、传递模式快速排序。本文主要对互换模式快速排序进行讲解。1. 图解算法原理1.设置检察官:互换模式下的快速排序如很多所知的一样,需要设置两个检察官(很多人...原创 2018-03-05 23:42:38 · 403 阅读 · 1 评论