2. 两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例 1输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807.
示例 2输入:l1 = [0], l2 = [0] 输出:[0]
示例 3输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] 输出:[8,9,9,9,0,0,0,1]
12345678910111213141516171819202122232425262728293031class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode dummy = new ListNode(); ListNode cur = dum ...
206.反转链表leetcode题目链接
题意:反转一个单链表。
示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
思路草稿
题解123456789101112131415161718192021222324/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution { public ListNode reverseL ...
数组静态数组12345// 一维String[] s = new String[3];char[] b = new char[]{'a', 'b'}; // 二维int[][] c = new int[10][10];
.length 记得是属性而不是方法 arr.length 没有()
Arrays.sort 排序
12345Arrays.sort(int[] arr) //从小到大排序Arrays.sort(int[] arr, int fromIndex, int toIndex) // [)Arrays.sort(int[] arr, int fromIndex, int toIndex, 比较器); //一定是需要泛型Arrays.sort(arr, (o1, o2) -> o2 - o1); //数组全部 从大到小排序 跟Collections.sort()一样Arrays.sort(arr, 0, 3, (o1, o2) -> o2 - o1); //从大到小排序,只排序[0, 3)
Arrays. ...
Java
未读插入流程和源码分析1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889/** * Associates the specified value with the specified key in this map. * If the map previously contained a mapping for the key, the old * value is replaced. * * @param key key with which the specified value is to be associated * @param value value to be associated with the specified key * @return the previous value ass ...
Java
未读HashMap 最早出现在JDK1.2中,底层基于散列算法实现
HashMap 允许null 键和null 值,在计算哈键的哈希值时,null 键哈希值为0。
HashMap 并不保证键值对的顺序,这意味着在进行某些操作后,键值对的顺序可能会发生变化。
HashMap 是非线程安全类,在多线程环境下可能会存在问题。
HashMap在JDK 1.8中包括;1、散列表实现、2、扰动函数、3、初始化容量、4、负载因子、5、扩容元素拆分、6、链表树化、7、红黑树、8、插入、9、查找、10、删除、11、遍历、12、分段锁等等这里我们先把目光放在前五项上,也就是关于数据结构的使用上。
散列表实现(一个简单的HashMap)123456789101112131415161718192021222324252627282930313233import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class Main { public static void main(String[ ...
snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。
其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。
具体介绍雪花算法是 64 位 的二进制,一共包含了四部分:
1位是符号位,也就是最高位,始终是0,没有任何意义,因为要是唯一计算机二进制补码中就是负数,0才是正数。
41位是时间戳,具体到毫秒,41位的二进制可以使用69年,因为时间理论上永恒递增,所以根据这个排序是可以的。
10位是机器标识,可以全部用作机器ID,也可以用来标识机房ID + 机器ID,10位最多可以表示1024台机器。
12位是计数序列号,也就是同一台机器上同一时间,理论上还可以同时生成不同的ID,12位的序列号能够区分出4096个ID。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454 ...
概述
得益于Lambda所带来的函数式编程
用于简化集合和数组操作的API
Stream流式思想的核心
得到集合或者数组的Stream流(相当于一根传送带)
把元素放上去
利用Stream流简化的API方便的操作元素
Tips:Stream只能使用一次
Stream流的三类方法
获取Stream流
创建一条流水线,并把数据放到流水线上准备进行操作
中间方法
流水线上的操作。一次操作完毕之后,还可以进行其他操作(支持链式编程)
终结方法
一个Stream流只能有一个终结方法,是流水线上的最后一个操作
count() forEach() 都是终结方法
集合获取Stream流使用Collection接口中的默认方法stream()生成流
名称
说明
default Stream stream()
获取当前集合对象的Stream流
数组获取获取Stream流
名称
说明
public static Stream stream(T[] array )
获取当前数组的Stream流
public static Stream of( ...