手动实现HashMap集合2021-05-05 15:01:28
/*
* 实现HashMap集合
* put(key,value)
* 1)key-> hash 散列码
* 2)hash& table.length-1 ->index
* 3)if(table[index]==null{
* 直接放
* }else{
* 找key是否存在,如果存在,新值覆盖旧值
* 如果不存在,将key,value封装为一个结点Entry直接添加
*
* }
* */
class MyHashMap
经过读题,我觉得这两个题目要表达的意思应该是完全相同的,当然也可能是我的理解出现了偏差。所以就把LRU 和 LFT 当作是一个。
当然,因为这个缘故,我把最近最久未使用的LRU当作了最久未使用写到底,到最后发现还是更像最不常用置换算法LFT一些。
下面就是代码了,用C语言链表
题目(数据结构测试)
代码:
#include
#include
#include
#define MAX 50
/*创建一个学生表结构体*/
typedef struct student_node
{
unsigned id;
char name[MAX];
char sex[MAX];
char major[MAX];
struct student_node *n
86. 分隔链表2020-09-24 19:04:06
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例:
输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5
# Definition for singly-linked list.
# class ListNo
Java HashMap 源码解析2020-04-01 23:52:06
1 final int hash(Object key){
2
3 // 如果为null则返回0
4 if(key == null){
5 return 0;
6 }
7
8 // 不为null则先获取hashCode
9 int h = key.hashCode();
10
11 // hashCode 前16位维持原样,后16位为原来前16位与后16位的异
24.两两交换链表中的节点2020-03-14 22:39:55
题目描述
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例
给定 1->2->3->4, 你应该返回 2->1->4->3.
思路
迭代
链表两两位置交换,具体看代码。
代码
/**
* Definition for singly-linked
手写链表2019-10-25 18:03:38
package Method;import org.omg.Messaging.SYNC_WITH_TRANSPORT;import serial.MyBaseBean;/** * Created by joyce on 2019/10/25. */public class MyLink { private MyNode firstNode; private MyNode lastNode; private Integer lengt
二叉搜索树中的两个节点被错误地交换。
请在不改变其结构的情况下,恢复这棵树。
示例 1:
输入: [1,3,null,null,2]
1
/
3
\
2
输出: [3,1,null,null,2]
3
/
1
\
2
示例 2:
输入: [3,1,4,null,null,2]
3
/ \
1 4
/
2
题目链接 : https://leetcode-cn.com/problems/recover-binary-search-tree/
题目描述:
二叉搜索树中的两个节点被错误地交换。
请在不改变其结构的情况下,恢复这棵树。
示例:
示例 1:
输入: [1,3,null,null,2]
1
/
3
\
2
输出: [3,1,null,null,2]
3
/
1
\