Lastest

反转链表

算法思想 初始条件,头结点不能为null,否则直接返回null 对于第i个节点,我们只要得到第i+1到last节点的逆序链表。假设第i+1到last节点的逆序链表的最后一个元素叫prev,那我们只要把prev.next设置为当前节点,并返回当前节点即可 对于最后一个节点last,last.next是null,我们直接返回last即可 以上三步可以逆序,但我们好像没保存新的头结点(原来的尾节点),第三部保存一下即可 上代码 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { protected ListNode newHead; public ListNode ReverseList(ListNode head) { if(head == null){ return null; } ListNode last = ReverseListRecursive(head); last.next = null; retur...

判断单链表中是否有环

算法核心思想 设置两只小狗,一个速度为1,另一只速度为2。小学相遇问题,很简单对吧。如果有环,第二只狗出发之后会追上第一只狗 退出条件 到达链表尾部 避免空指针 实现代码 public class Solution { public boolean hasCycle(ListNode head) { ListNode dog1 = head; // 狗1 ListNode dog2 = head; // 狗2 // 空指针判断 if(dog1 == null || dog2 == null){ return false; } // 退出条件: 空指针 while(dog1.next != null && dog2.next != null && dog2.next.next != null){ dog1 = dog1.next; dog2 = dog2.next.next; // 相遇,有环 if(dog1 == dog2){ return true; ...

用两个栈来实现队列

用两个栈来实现队列 算法思想 什么是栈,后进先出 什么是队列,先进先出 如果有两个栈,如何模拟队列先进先出?假设有三个元素ABC进入栈1,我们按照队列的要求,pop操作应该弹出A。但此时栈1的数据弹出顺序是CBA。解决方法:需要出栈的时候,先把栈1所有数据逐个pop,并push到栈2。最后从栈2出栈,那么我们就可以得到A了 我们把栈1数据全部弹到栈2,那么要入栈如何破?自然是把栈2数据逐个pop,并push进入栈1。最后在把当前数据push进栈1,就好了不是么 上代码 import java.util.Stack; public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { int val; // stack2 => stacl1 while(!stack2.empty()){ val = stack2.pop(); stack1.push(val); }...

centos安装java 8

查看当前linux自带jdk是否安装,以及jdk版本 java -version rpm -qa | grep java rpm -qa | grep gcj rpm -qa | grep jdk # 如果已经有jdk, 会显示如下 java-x.x.x-gcj-compat-x.x.x.x-xxjpp.xxx java-x.x.x-openjdk-x.x.x.x-x.x.bxx.exx 如果有已安装的jdk,则挨个卸载,没有则跳过这一步 rpm -e –nodeps java-x.x.x-gcj-compat-x.x.x.x-xxjpp.xxx rpm -e –nodeps java-x.x.x-openjdk-x.x.x.x-x.x.bxx.exx 如果找不到openjdk source,还可以如下方法卸载 yum -y remove java java-x.x.x-gcj-compat-x.x.x.x-xxjpp.xxx yum -y remove java java-x.x.x-openjdk-x.x.x.x-x.x.bxx.exx 官网下载jdk,并安装。 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 我们使用:Linux x64 Comp...

阿里云centos环境python的pyppeteer无法下载依赖chromium组件

pypetter能做什么 自行百度 为什么没法下载 省略原因,只有mmp 解决方法 1 既然无法下载,那我们就手动下载然后放到指定位置么。问题来了 从哪下载 放到哪里 从哪里下载 找这个文件:find / -name chromium_downloader.py python 3.8环境下,找到文件:/usr/local/lib/python3.8/site-packages/pyppeteer/chromium_downloader.py 备份py库文件稍后恢复,/usr/local/lib/python3.8/site-packages/pyppeteer/chromium_downloader.py 编辑 vim /usr/local/lib/python3.8/site-packages/pyppeteer/chromium_downloader.py 备份 mv /usr/local/lib/python3.8/site-packages/pyppeteer/chromium_downloader.py.bak /usr/local/lib/python3.8/site-packages/pyppeteer/chromium_downloader.p 稍后恢复 mv /usr/local/lib/python3.8/site-packages/pyppe...

lintcode-4 丑数算法

题目 设计一个算法求出第n个只包含因子2,3,5的数。认为1也是丑数 比如输入9,则返回10;输入1,返回1 分析 只包含因子2,3,5,则这个数的形式就是F = (2^x) (3^y) (5^z), 限制条件x,y,z>=0 求出对应x,y,z即可 1th:x=y=z=0, F1 = (2^0) (3^0) (5^0) = 1 2th:x=1,y=z=0, F2 = 2 F1 = 2 3th:x=0,y=1,z=0, F3 = 3 F1 = 3 4th:x=2,y=0,z=0, F4 = 2 F2 = 4 5TH: x=0,y-0,z-1, F5 = 5 F1 = 5 对于第N个丑数,它的x+y+z < N-1 因子2,3,5的数量。 两个2相乘会大于3,因此增加一个2,就要对应增加一个3 一个2,一个3相乘,会大于5,。因此,增加一个2,3就需要替换成5 F1 = 1 迭代1:基底F1=1 F2 = F1 2 = 2(乘以2最小) F3 = F1 3 = 3(乘以3最小) F4 = F1 2 2 = 4(乘以2^2最小) F5 = F1 5 = 5(乘以5最小) F6 = F1 2 3 = 6(乘以23最小) F7 = F1 3 3 = 9(乘以3*3最小) 迭代2:基底 = F5=5 F8 = F5 2 = 10(乘以...

angular 9打造用户系统 - 7使用ngrx router store管理路由

本篇要做什么 本系列最后一篇 本文将使用ngrx router store来绑定angular路由到ngrx,同事使用CustomRouteStateSerializer github代码:https://github.com/shyandsy/angular-9-ngrx-user-mamagement 原教程视频连接 https://www.youtube.com/watch?v=XHw4hYkGsHM&list=PLaMbwDs23r4KXoMucJEyUAvamQ-kFNBvC&index=9 安装文档文档位置 https://github.com/ngrx/platform/tree/master/docs/router-store 安装 npm install @ngrx/router-store --save 新建src\app\shared\utils.ts, customer-route-state-serializer。这段代码是上面文档提供的 import { StoreModule, ActionReducerMap } from "@ngrx/store"; import { Params, RouterStateSnapshot} from '@angular/router'; import { RouterStateSeria...

angular 9打造用户系统 - 6使用ngrx entity完成CRUD操作

本篇要做什么 本文将使用effect entity来实现CRUD操作,需要用到ReactiveForm github代码:https://github.com/shyandsy/angular-9-ngrx-user-mamagement 原教程视频连接 https://www.youtube.com/watch?v=XHw4hYkGsHM&list=PLaMbwDs23r4KXoMucJEyUAvamQ-kFNBvC&index=8 步骤 src/app/app.module.ts导入ReactiveFormsModule 不在给出全部代码,需要的话,参照前一篇文章。 // 导入ReactiveFormsModule import { ReactiveFormsModule } from '@angular/forms'; imports: [ BrowserModule, StoreModule.forRoot({}), StoreDevtoolsModule.instrument(), EffectsModule.forRoot([]), HttpClientModule, AppRoutingModule, ReactiveFormsModule, // 加入ReactiveFor...

angular 9打造用户系统 - 5使用ngrx entity

本篇要做什么 本文将使用effect entity库来管理数据集,减少CRUD操作代码量,通过id来查找user github代码:https://github.com/shyandsy/angular-9-ngrx-user-mamagement 安装ngrx entity npm install @ngrx/entity 原教程视频连接 https://www.youtube.com/watch?v=igc5rBN50wk&list=PLaMbwDs23r4KXoMucJEyUAvamQ-kFNBvC&index=7 步骤 修改src\app\users\state\user.reducer.ts import * as userAction from './user.actions'; import {createFeatureSelector, createSelector, Store} from '@ngrx/store'; // 加入 import {EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity'; import * as fromRoot from '../../state/app-state'; import { User } from '...

执行时间: 52.623987197876 毫秒