剑指Offer系列
剑指Offer系列题解数组1 数组中重复的数字
https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/
解一数组排序后遍历
123456789public int findRepeatNumber(int[] nums) { Arrays.sort(nums); for (int i = 0; i < nums.length - 1; i++) { if (nums[i] == nums[i + 1]){ return nums[i]; } ...
基于大数据的图书推荐系统系统(五)——离线推荐
Offline Recommender
注意:离线推荐模块我直接使用原数据集的全部数据时会出现内存溢出的问题,如果你的虚拟机设置的内存并不大,建议选取部分的数据集数据
新建子模块OfflineRecommender
添加依赖
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576<?xml version="1.0" encoding="UTF-8"?& ...
基于大数据的图书推荐系统系统(四)——数据统计
Statistics Recommender
第一个Dataloader模块记录之前没有把过程截图,我下面将离线数据统计模块的创建过程截图记录
此模块的前置条件:
第一步Dataloader成功存储数据
虚拟机安装完成MongoDB和Spark并且成功启动
创建子模块
添加依赖
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465<?xml version="1.0" encoding ...
基于大数据的图书推荐系统系统(三)——数据加载与存储
Dataloader
此模块的前置条件:
本地有Maven、Java、Scala、IDEA环境
虚拟机安装完成MongoDB和Spark并且成功启动
MongoDB可以不用建库建表,本地最好有一个MongoDB的可视化工具,我是用robo 3T,来验证MongoDB的远程连接和数据是否成功导入
以下步骤可能不太详细,参照我的项目结构以及代码灵活改动
新建父工程book-recommender
父工程只进行一些依赖的全局设置,不涉及具体编码,所以删除该目录下的src目录
为父工程添加全局依赖
12345678910111213141516171819202122232425262728 ...
基于大数据的图书推荐系统系统(二)——软件安装
基本软件安装1.安装MongoDB
参考菜鸟教程:Linux平台安装MongoDB
MongoDB下载网址:https://www.mongodb.com/try/download/community
复制后的链接为:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-4.2.13-rc2.tgz
具体操作如下:
1234567891011121314151617181920212223242526272829303132333435cd /usr/localwget https://fastdl.mongodb.org ...
剑指Offer35-复杂链表的复制
📄题目描述:
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。
123456789101112// Definition for a Node.class Node { int val; Node next; Node random; public Node(int val) { this.val = val; this.next = null; this.random = null; ...
剑指Offer24-反转链表
📄题目描述:
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
🤔思路:
思路一:
思路参考 吴师兄的图解剑指 Offer 结构化专栏
使用三个指针,分别为 pre、cur、next,其中 pre 初始为 null,也是最终返回的链表头节点,cur 指向当前链表的头节点,next 为 cur 节点的下一个节点,遍历 cur 指针直至为 null,将 cur 的下一指针进行反转指向 pre ,然后将三个指针依次向后移动,最终返回 pre。
☕代码:
123456789101112131415161718192021public ListNode reverseLi ...
剑指Offer22-链表中倒数第K个节点
📄题目描述:
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
🤔思路:
思路一:
使用快慢两个指针,两个指针之间相差K个节点,当快指针指向链表尾端时,慢节点指向倒数第K个节点。
☕代码:
123456789101112131415public ListNode getKthFromEnd(ListNode head, int k) { // 快指针 ListNode fast = head; // 慢指针 ListNode slow = head; while (fast != null ...
剑指Offer18-删除链表节点
📄题目描述:
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。
🤔思路:
思路:
用一个辅助指针对链表进行遍历,遇见待删除的元素时,将当前节点的next指针指向下下个节点。
☕代码:
123456789101112public ListNode deleteNode(ListNode head, int val) { if(head.val==val) return head.next; ListNode p = head; while(p.next!=null){ if(p.next.val==val){ ...
剑指Offer06-从尾到头打印链表
📄题目描述:
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
🤔思路:
思路一:
题意是对链表的倒序输出,自然会想到一种先入后出的数据结构——栈,将链表中的元素依次入栈,再出栈得出结果。
☕代码:
123456789101112131415161718public int[] reversePrint(ListNode head) { // 使用栈,依次出栈 ListNode cur = head; Stack<Integer> stack = new Stack<>(); while (cur.next != null) { stack.p ...
基于大数据的图书推荐系统系列(一)——基础环境搭建
虚拟机基础环境搭建1.创建虚拟机1.打开VMware,创建新的虚拟机
2.选择典型,下一步
3.选择稍后安装,下一步
4.选择系统版本,下一步
我选择的系统版本是CentOS 6.8
5.填写虚拟机名称以及选择虚拟机存放的位置,下一步
6.选择虚拟机磁盘大小,我这里按照默认配置,下一步
7.点击自定义硬件
8.选择内存、处理器核数以及选择本地的系统镜像,网络我选择NAT,点击关闭即可完成配置
9.上一步点击关闭后就是下面的状态
10.然后开启此虚拟机,默认回车开始安装系统
11.是否测试系统镜像,我选择跳过测试直接开始安装
12.点击Next
13.选择英语,Nex ...
Nginx笔记
Nginx笔记