浅析算法
分享算法知识
rocling
我思故我在
展开
-
LeetCode 980. 不同路径 III
在二维网格 grid 上,有 4 种类型的方格:1 表示起始方格。且只有一个起始方格。2 表示结束方格,且只有一个结束方格。0 表示我们可以走过的空方格。-1 表示我们无法跨越的障碍。返回在四个方向(上、下、左、右)上行走时,从起始方格到结束方格的不同路径的数目,每一个无障碍方格都要通过一次。示例 1:输入:[[1,0,0,0],[0,0,0,0],[0...原创 2019-12-01 13:02:01 · 405 阅读 · 0 评论 -
判断两个链表是否相交
JAVA堆和栈比较两个链表,判断是否相交,找出相交的第一个点?首先应该清楚两个单链表相交要么都是无环链表,要么都是有环链表,不存在一个有环链表和一个无环链表相交,因为两个链表一旦相交则后续的链表都应该是相同的(1)将其中任意一个链表的环打破,即让尾结点指向null(记下保存原本应当指向的位置),然后判断第二个链表是否含有环,若第二个链表无环则相交,否则不相交(2)利用判断单...原创 2019-11-29 21:10:37 · 345 阅读 · 0 评论 -
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
本题是LeetCode第19题,以后题目也可能会变。本题的描述如下:示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.思路:用两个节点,删除让前一个节点比后一个节点先跑n次,然后两个一起跑。当前一个节点遍历结束或者为空的时候,后一个节点是要删除的元素,但是要删除...原创 2019-11-29 20:02:08 · 3526 阅读 · 2 评论 -
LeetCode - 两个数组的交集 II
题目给定两个数组,写一个方法来计算它们的交集。例如:给定nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].注意:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑输出结果的顺序。跟进:如果给定的数组已经排好序呢?你将如何优化你的算法? 如果 nums1 的大小比 nums2 小...原创 2019-11-22 11:29:53 · 205 阅读 · 0 评论 -
leetcode No.980 不同路径 III
承接不同路径 I和不同路径 II,虽然我的解法没用到动态规划,但是还是忍不住一块说了吧。题目链接:力扣leetcode-cn.com题目描述:在二维网格grid上,有 4 种类型的方格:1表示起始方格。且只有一个起始方格。 2表示结束方格,且只有一个结束方格。 0表示我们可以走过的空方格。 -1表示我们无法跨越的障碍。返回在四个方向(上、下、左、右...原创 2019-11-22 11:18:14 · 386 阅读 · 0 评论 -
算法题-遍历五个坐标的最短路径
题目描述平原上,一群蜜蜂离开蜂巢采蜜,要连续采集5片花丛后归巢,已知5片花丛相对蜂巢的坐标,请你帮它们规划一下到访花儿的顺序,以使飞行总距离最短。输入描述以蜂巢为平面坐标原点的5片花丛A、B、C、D、E的坐标,坐标值为整数。输出描述从出发到返回蜂巢最短路径的长度取整值,取整办法为舍弃小数点后面的值。示例输入200 0 200 10 200 50 200 30 ...原创 2019-11-22 10:56:49 · 1624 阅读 · 0 评论 -
海量数据面试题
第一部分:1、一个超大文件(一台机器计算不了),里面存放的都是ip,一行存放一个,求这个文件中哪一个ip出现的次数最多?2、个超大文件,里面存放的都是url,一行存放一个,求两个文件中相同的url?3、一个超级大的文件,里面存放都是url,一行一个,用户给定一个url,如何快速判断url是否在文件中?第二部分:1、给个超过100G的logfile, log中存着IP地址, 设...原创 2019-11-20 11:32:27 · 555 阅读 · 0 评论 -
POJ 1700 经典过河问题(贪心)
POJ题目链接:http://poj.org/problem?id=1700N个人过河,船每次最多只能坐两个人,船载每个人过河的所需时间不同,问最快的过河时间。思路:当时所需要的最小时间很容易求得,现在由,假设n个人单独过河所需要的时间存储在数组 中,将数组 按升序排序,那么 这时将单独过河所需要时间最多的两个旅行者送到对岸去。有两种方式:1> 最快的(即所用...原创 2019-11-20 11:05:56 · 900 阅读 · 0 评论 -
单链表是否有环(Java版)--强烈推荐
题目:判断一个带头结点的单链表L是否有环解题思路:咋看之下,这题还真不好解,于是又一些投机取巧的人,在访问单链表中元素的时候,用一个比较大的数N控制访问元素的个数,他们认为如果在访问到第N个元素之前有一个元素为null,那么单链表没有环,反之,单链表有环。他们的解释是都访问了这么多元素了,还没有一个元素为空,单链表很有可能有环,再加上一般单链表中的元素都不超过N个,所以单链表有环。对于这...原创 2019-11-20 10:58:47 · 164 阅读 · 0 评论 -
判断单链表是否有环(Java实现)--强烈推荐
给定一个单链表,判断链表中是否有环的几种方法今天刷LeetCode刷到一道这样的题,详情参见(https://leetcode-cn.com/problems/linked-list-cycle/)ADT: class ListNode { int val; ListNode next; ListNode(int x) { val = x; nex...原创 2019-11-20 10:46:48 · 241 阅读 · 0 评论 -
Prim最小生成树算法详解以及java实现源代码
1.Prim算法核心思想prim算法也是贪婪算法的一个典型例子,有点类似于dijkstra算法。核心思想:将点分为两拨,已经加入最小生成树的,未加入的,找到未加入中距离集合最近的点,添加该点,修改其它点到集合的距离,直到所有结点都加入到最小生成树。2.java源代码import java.util.*;public class Prim1 { static int MAX ...原创 2019-11-18 13:12:50 · 583 阅读 · 1 评论 -
求n*m网格内矩形的数目
一个n*m的网格,求这个网格中矩形的数目。比如以下2*2网格,总共有9个矩形:4个1*1的矩形,4个1*2的矩形,1个2*2的矩形算法1:动态规划,假设dp[i][j]表示以第 i 行第 j 列的格子为右下角顶点的矩形数目,那么dp[i][j] = 1 + dp[i-1][j] + dp[i][j-1] – dp[i-1][j-1] , 这里的1表示i ,j 位置的格子自身构成1...原创 2019-11-17 18:50:49 · 2541 阅读 · 2 评论 -
Prim算法实现最小生成树MST(java)Prim算法是另一种生成图的最小生成树的算法,这里简单说一下Prim算法和Kruskal算法的在实现方面的区别: 1、Kruskal算法在生成最小生成树的
Prim算法是另一种生成图的最小生成树的算法,这里简单说一下Prim算法和Kruskal算法的在实现方面的区别:1、Kruskal算法在生成最小生成树的过程中产生的是森林,Prim算法在执行过程中始终都是一棵树;2、Kruskal和Prim实现上的最大区别是Kruskal不需要搜索每个顶点的邻接节点,而Prim中需要,所以Prim图构建时需要利用邻接链表进行构建,Kruskal不用!...原创 2019-11-12 23:16:13 · 482 阅读 · 0 评论 -
两根粗细不均,长短不同的绳子,每根完全燃烧正好一个小时,求用这两根绳子计算十五分钟
将甲A绳对折,同时点着甲绳的两端和乙绳的一端,半小时甲绳烧尽,乙绳少了一半,再将乙绳的另一端对折回来,与另一端放在一起同时燃烧,15分钟烧尽。...原创 2019-10-30 19:17:42 · 3909 阅读 · 0 评论 -
一个m列n行,每格都是矩形的矩形网格,能数到多少个矩形?
链接:https://www.zhihu.com/question/56332113/answer/148746264从动态规划上考虑我们假设dp【i】【j】表示以第 i 行第 j 列的小矩形网格为右下角顶点的矩形数。那么转移方程就是dp【i】【j】=dp【i-1】【j】+ dp【i】【j-1】- dp【i-1】【j-1】+1。最后将所有的dp【i】【j】全部加起来就是要求的方案数。我...原创 2019-10-30 19:20:27 · 3574 阅读 · 0 评论 -
n人最快过桥问题【java版】
【问题描述】n个人要晚上过桥,在任何时候最多两个人一组过桥,每组要有一只手电筒。在这n个人中只有一个手电筒能用,因此要安排以某种往返的方式来返还手电筒,使更多的人可以过桥。 每个人的过桥速度不同,每组的速度由过桥最慢的人所用的时间决定,约定n<=1000,并且没有人的过桥时间会超过100秒。【输入】输入的第一行给出n,接下来的n行给出每个人的过桥时间,不会超过1000...原创 2019-10-30 19:20:43 · 801 阅读 · 0 评论 -
过桥时间最短问题【问题描述】 n个人要晚上过桥,在任何时候最多两个人一组过桥,每组要有一只手电筒。在这n个人中只有一个手电筒能用,因此要安排以某种往返的方式来返还手电筒,使更多的人可以过
【问题描述】n个人要晚上过桥,在任何时候最多两个人一组过桥,每组要有一只手电筒。在这n个人中只有一个手电筒能用,因此要安排以某种往返的方式来返还手电筒,使更多的人可以过桥。每个人的过桥速度不同,每组的速度由过桥最慢的人所用的时间决定,约定n<=1000,并且没有人的过桥时间会超过100秒。【输入】输入的第一行给出n,接下来的n行给出每个...原创 2019-10-28 22:37:18 · 2028 阅读 · 0 评论 -
java 实现N个女人过桥问题
题目描述:N个女人过桥,夜间有一火把,每次最多过两个,必需带火把,过桥速度不一样。过去后必须回来一个人,把火把带回来。要求女人都过去,实现最小过桥时间。如果4个女人过桥,时间为1,2,5,10,那么最小时间是17。思路:在未过桥中选最少时间的两个人过桥,当过桥后选最少时间的人返回,此时火把交给返回的人,同时对己过桥的人进行统计,当还有三人未过桥时(包含返的人),让时间最大...原创 2019-10-28 22:33:39 · 227 阅读 · 0 评论 -
java:(a+b)的n次幂的展开式中各项的系数很有规律
java:(a+b)的n次幂的展开式中各项的系数很有规律对于n=2,3,4时分别是:1 2 1,1 3 3 1,1 4 6 4 1.11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1下列的程序给出了计算第m层的第n个系数的计算方法,试完善之(m,n都从0算起).public class Test { public sta...原创 2019-10-28 22:16:27 · 3187 阅读 · 2 评论 -
跳跃表的原理及Java实现
原理参考:SkipList跳表这里我使用Java实现其原理:首先是SkipListNode的定义:SkipListNode.javapackage skiplist;/** * Created by zhuxinquan on 17-3-11. */public class SkipListNode implements Comparable { privat...原创 2019-10-28 21:51:53 · 478 阅读 · 1 评论 -
动态规划-不同路径(I,II)
不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3...原创 2019-10-28 17:43:56 · 235 阅读 · 0 评论 -
Python编程练习.机器人行走
1.LeetCode974 模拟行走机器人控制机器人行走的基本思想是:先更新方向变化,再以 步长1 更新坐标。需要注意的是,原题解中提到:必须注意使用 集合 Set 作为对障碍物使用的数据结构,以便我们可以有效地检查下一步是否受阻。如果不这样做,我们检查障碍点的速度可能会慢大约 10000 倍。class Solution: def robotSim(self, commands...原创 2019-10-28 17:37:59 · 5540 阅读 · 0 评论