八股记录——IO
八股记录——集合
八股记录——Java基础部分
一、前言
最近看了一遍JavaGuide网站上的八股文,觉得还是有必要记录一些需要记忆的重要内容~
本章节是对个人觉得很重要的——Java基础部分常见面试题的记录,也可以说是JavaGuide的个人浓缩版。不过学习、理解记忆还是推荐去看原网站,讲解比较细致。
JavaGuide官网:https://javaguide.cn/java/basis/java-basic-questions-01.html
二、基本概念与常识
1、Java 语言有哪些特点?
- 面向对象(封装,继承,多态);
- 平台无关性( Java 虚拟机实现平台无关性);
- 支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持);
- 可靠性、安全性;
- 支持网络编程并且很方便( Java 语言诞生本身就是为简化网络编程设计的,因此 Java 语言不仅支持网络编程而且很方便);
- 编译与解释并存;
牛客必刷100题
一、链表
BM1 反转链表
描述
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。
数据范围: 0≤n≤10000≤n≤1000
要求:空间复杂度 O(1),时间复杂度 O(n)。
思路:迭代
1 | public class Solution { |
剑指offer专项突击
剑指 Offer 09. 用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
思路:两个栈
1 | class CQueue { |
每日一题——December
前言
12月份每日一题记录~
1805. 字符串中不同整数的数目
给你一个字符串 word ,该字符串由数字和小写英文字母组成。
请你用空格替换每个不是数字的字符。例如,”a123bc34d8ef34” 将会变成 “ 123 34 8 34” 。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):”123”、”34”、”8” 和 “34” 。
返回对 word 完成替换后形成的 不同 整数的数目。
只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。
1
2
3 输入:word = "a123bc34d8ef34"
输出:3
解释:不同的整数有 "123"、"34" 和 "8" 。注意,"34" 只计数一次。
LeetCode 热题 HOT 100(一)
前言
leetcode恢复刷题,十月底之前尽量完成这部分…该部分只简单记录部分关键思路以及代码,帮助回顾~
1. 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
思路:HashMap
由于还需要返回数组下标,所以存的时候肯定还要存数组下标,那就需要存一个键值对。这种情况直接考虑HashMap~
1 | class Solution { |
LeetCode月冲刺
349. 两个数组的交集
给定两个数组 nums1
和 nums2
,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
1 | 输入:nums1 = [1,2,2,1], nums2 = [2,2] |
思路1:集合
1 | class Solution { |
- 时间复杂度:O(m+n)
- 空间复杂度:O(m+n)