自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

木桥流水人家

时来小记

  • 博客(17)
  • 收藏
  • 关注

原创 相交链表

  解法一是遍历一遍其中一个链表,用哈希表存储地址,再遍历另一个链表时,在哈希表中查询是否存在同样的结点。这种思路比较简单,就是比较费内存。  解法二就是利用双指针,定义一个pA指向A链表,再定义一个pB指向B链表。当pA走到A链表尾时,让它下一步指向B链表,pB也类似一样操作,思路就是让它们都遍历一遍A链表和B链表,两个指针走的步数一样多,他们一定会有相同的时候,如果相同的时候,都为null,那说明无相交点,因为都走到两个链表的尾部了还不相同。如果不为null,那个点一定是相交点的开始。这种空间复杂度要

2021-02-28 14:20:01 106

原创 环形链表

  解法一就是遍历链表,把没有访问过的结点放进哈希表里,一旦当前访问的结点是哈希表里的结点,就代表当前结点被访问了两次,这个链表一定存在环。这种比较占存储空间。  解法二就是使用步长不一致的指针,也叫快慢指针,核心思想是龟兔赛跑算法。快指针一次走两步,慢指针一次走一步,如果快指针和慢指针重合,说明链表有环。这里需要注意,快指针和慢指针的起点问题,如果用的while循环,那么快指针就在头结点的下一个结点。当快指针指向null或者快指针的下一个指向null时,那么该链表是不存在环的。代码如下:public

2021-02-25 15:24:43 87

原创 复制带随机指针的链表

  解题思路是先创建一条复制链表,复制链表的val和原始链表的val相对应,创建过程中,使用哈希表建立原始结点和复制结点的映射。原始结点为key,复制结点为value。那么,在复制链表中查询当前结点的随机指针时,当前对应原始结点的随机指针所映射的值value就是这个复制结点的随机指针。这个解题思路关键在于利用哈希表的键值对的映射关系。代码如下:/*// Definition for a Node.class Node { int val; Node next; Node ra

2021-02-25 14:40:51 186

原创 合并K个升序链表

解法一:合并K个升序链表,可以化为进行K-1次两个升序链表的合并,简单粗暴,直接遍历链表数组,将两个升序链表合并后的结果继续与下一个升序链表合并,直到链表数字中无需要合并的链表。代码暂无。解法二:采用分治法合并,将链表数组里面的链表不断二分,二分完了再往上合并,就是不断合并已经合并的链表。这里需要注意一下链表数组为空的情况。这种方法基本就是分治法的思想。代码如下:/** * Definition for singly-linked list. * public class ListNode {

2021-02-24 15:38:45 306

原创 删除链表的倒数第n个结点

  题目要求扫描一遍删除倒数第n个结点,所以不建议算出链表的长度,好的解决方法是使用快慢指针,快慢指针一开始都指向第一个结点。为了能删除倒数第n个结点, 我希望快指针为null时,慢指针指向倒数第n+1个结点,这样就能快速删除倒数第n个结点。那么快指针就比慢指针快n+1步。  假如我们定义链表长度为s,那么倒数第n+1个结点实际上是处于s-n这个位置,也就是说慢指针需要走s-(n+1)步。在循环中,快指针走了n+1次时,慢指针才开始走。当然,如果要删除的是第一个结点,那么快指针就走不到n+1次,只能走n次

2021-02-24 14:41:06 50

原创 合并两个有序链表

解法一:这种解法就是默认把l2的结点插入到l1当中,可把l1和l2直接当做移动指针,并为l1设置一个前驱指针pre, 再比较l1和l2当前结点的值哪个更小,如果l1的值小于l2,则将l2这个结点插入到l1这个结点之前,移动pre和l2,否则移动pre和l1。逐个比较每个结点,直到这两个移动指针任意一个为空。但是这种想法就还需要考虑l1是否为空、插入的结点位置是不是在头结点之前等。略微有点麻烦,这个运行时间短,占用内存大一些。/** * Definition for singly-linked list

2021-02-24 13:38:29 39

原创 两数相加(链表)

解法一:  定义两个移动指针pointer1和pointer2,分别指向两个链表,定义一个进位变量index。在对两个链表逐位相加时,可不分配额外的内存给最终的结果,直接原地更新两个链表的值,最终肯定选长的链表作为最终结果。如果最高位相加还要进一位,还是要额外申请内存给进位。对于长度不相同的链表还是要注意进位。因为要选择更长的链表作为最终结果,所以需要判断移动指针哪个为空哪个不为空,显然是比较复杂的。但是也算是一种解法,我以为可以节省内存,但是在leetcodeleetcodeleetcode上运行时并没

2021-02-24 10:35:38 50

原创 解决TypeError: can't pickle _thread.lock objects问题

看了下github上的回答,发现是我的一个tensor游离在计算图之外。我自定义了池化层,返回池化索引。然后在反池化的时候,我把这个索引tensor当成了参数传入我自定义的反池化层(用lambda包装反池化函数)。这个是有问题的,应该把这个索引tensor和实际的input参数一起当成反池化层(lambda层)的输入。改完了,就没这个错误了,这个错误真是困扰了我好久。lambda层非常容易出错。(...

2020-03-15 17:43:07 3745

原创 MNIST数据集的训练代码

import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import datasets, layers, optimizersfrom tensorflow_core.examples.tutorials.mnist import input_data# 读取数据,加载本地数据集MNIST_dat...

2020-02-16 22:55:24 348

原创 解决tensorflow安装不上的问题

解决“Could not find a version that satisfies the requirement tensorflow (from versions: ) No matching distribution found for tensorflow”的问题先看看自己python的版本以及位数:看到了我的python是32bit的。。。。我一直以为自己安装的是64bit的。...

2018-10-13 17:36:06 20715 5

原创 二叉树的构造和先序、中序、后序以及层次遍历

待续

2018-09-12 21:53:42 347

原创 解决用Ambari搭建大数据平台时出现Permission denied (publickey,password).SSH command execution finished的问题

我是普通用户利用Ambari搭建的大数据平台,所以SSH密钥也是普通用户下的密钥,即id_rsa 文件。用Ambari搭建大数据平台之前,集群内的计算机之间已经可以互相免密登录了。在如此设置进行下一步之后,主机上(master)就出现了: Permission denied (publickey,password).SSH command execution finished 多次尝试解决问...

2018-09-01 21:06:52 4599

原创 解决安装Ambari时出现“REASON: Server not yet listening on http port 8080 after 50 seconds. Exiting.”的问题

查看Amabri安装日志可以看到出错信息,此日志路径为:/var/log/ambari-server/ambari-server.log,当然还可以查看/var/log/ambari-server/ambari-server.out 内的信息帮助自己解决问题。 我安装Ambari-server时出现这个问题并不是因为启动时间设置太短,即使我在/etc/ambari-server/conf/amb...

2018-09-01 19:41:49 8297

原创 将linux的系统时间EDT改为CST

由于集群中所有节点的时钟以及运行访问Ambari Web界面的浏览器的计算机必须能够彼此同步,所以需将这些计算机的系统时间设置一致,但由于主机是国外服务器,系统时间标准为EDT,需要将其改为CST(国内标准时间)。只需执行以下操作即可:mv /etc/localtime /etc/localtime.bakln -s /usr/share/zoneinfo/Asia/Shanghai /e...

2018-08-29 17:21:49 1220

原创 简单排序算法 -简单选择排序

一趟简单选择排序的基本思想为:通过n-i次的关键字比较,从n-i+1 个记录中选出关键字最小的记录,并和第i个(0<i<n)个记录交换,当然是在选出的关键字下标不与i 相同的情况下。 完整简单选择排序代码如下:void SelectSort(SqList &L){ for(int i=1;i<L.length;i++) { j=Se...

2018-08-23 12:00:13 218

原创 经典排序算法 - 快速排序

代码如下:

2018-08-20 10:58:36 297

原创 经典排序算法 - 冒泡排序以及沉底排序

冒泡排序:void bubblesort(int a[],int n){ int i,j,temp; for(i=0;i<n-1;i++) { for(j=n-1;j>i;j--) { if(a[j-1]>a[j]) { temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; } } ...

2018-08-18 21:19:00 2667 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除