自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 剑指offer 35 复杂链表的复制 (java)

剑指offer 35 复杂链表的复制题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)分析: 即原链表对应的每个节点都要新建一遍,且要保证指针的指向.方法1原地复制,再拆分链表将原链表的每个节点都复制一遍,且复制的节点紧随原来的节点。全部复制完毕,再断开与原链表的链接。图片来自Markus)impor

2020-06-06 22:59:32 187

原创 计算机网络-面试题 吐血整理

网络-面试题tcptcp三次握手四次挥手功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入tcptcp三次握手四次挥手序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的

2020-06-05 11:42:56 486

转载 leetcode 43. 字符串相乘

43. 字符串相乘给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长度小于110。num1 和&n

2020-06-03 17:04:07 195

原创 剑指offer 矩形覆盖(java)

矩形覆盖我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:解题思路:参考struggle201907102230352 public class Solution { public int RectCover(int target) { //f(n) = f(n-1)+ f(n-2) if(target == 0) return 0;

2020-06-01 17:02:37 152

原创 剑指offer 矩形覆盖(java)

矩形覆盖我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:解题思路:参考struggle201907102230352 public class Solution { public int RectCover(int target) { //f(n) = f(n-1)+ f(n-2) if(target == 0) return 0;

2020-06-01 15:23:18 112

原创 剑指offer 03二维数组的查找(java)

解题思路从数组右上角(左下角)开始遍历;当target小于当前值,说明target在当前左边区域,删除当前值所在的列;大于当前值,说明target在当前值下方,删除其所在的行;等于当前值,直接返回true;循坏完毕未找到,返回false;Java Solutionclass Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { // n次提交代码心得:matrix为nu

2020-06-01 14:03:00 119

原创 剑指offer 05 替换空格(java)

替换空格题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。注意输入类型,输入的str为StringBuffer,相关操作有设置长度,setCharAt()等,随后需要调用toString()返回。方法一直接在原数组上替换 :时间O(N)空间O(1)public class Solution{ public String replaceSpace(StringBuffer

2020-06-01 14:01:19 164

原创 剑指offer 06 从尾到头打印链表(java)

从尾到头打印链表题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。方法1采用stack实现逆序~import java.util.Stack;/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/impo

2020-06-01 13:58:59 197

原创 剑指offer 09 用两个栈实现队列(java)

用两个栈实现队列一个用于进队,一个用于出队。stack1负责所有元素依次入队, stack2负责出队顺序,将stack1中的元素依次push到stack2中时,已经实现元素相对顺序逆转,1)当stack2不为空时,出队就出stack2中的元素,当stack2中为空时,需要将stack1中的元素全部入stack2!import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<I

2020-06-01 13:56:55 115

原创 剑指offer 12 矩阵中的路径(java)

面试题12. 矩阵中的路径题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因为字符串的第

2020-05-27 11:07:13 155

原创 剑值offer 36 二叉搜索树与双向链表(java)

面试题36 二叉搜索树与双向链表题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。题解题目要求排序的双向链表,则:采用中序遍历,刚好节点的值为一个递增的序列。双向链表: 则链表中相邻的两个节点之间(如果驱节点 pre ,当前节点 cur)有则 pre.right = cur, cur.left = pre算法流程采用非递归的中序dfs,用一个栈记录访问次序,一个辅助链表记录访问结果,在辅助链表中修改指针指向。返回辅助

2020-05-26 20:10:12 86

原创 十大排序算法(快排、归并等)

包含快速排序归并排序package sort;public class SortAlgorithm { /* 快速排序 */ public void quickSort(int[] arr, int low, int high){ if(low >= high) return ; // 数组只剩一个元素,不用再排序; // 每次排序设置一个基准点,低于基准点的数放在基准点右边,高于基准点的数放在基准点左边;

2020-05-26 16:44:57 205

原创 剑指offer 62_二叉搜索树的第k个结点(java)

二叉搜索树的第k个结点思路采用中序遍历,天然的就是升序,则找到中序遍历的第k个节点就行~~~写法1 – 递归/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/// 考虑二叉搜索数的性质,中序遍历的结果就是升序的,那么遍历到

2020-05-26 16:32:23 213

原创 剑指offer 58_翻转单词顺序(java)

面试题58 - I. 翻转单词顺序输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。方法1. 两次翻转import java.lang.StringBuilder;public class Solution { public String ReverseSentence(String str) { // " "?首位如果时空格怎

2020-05-26 16:31:16 182

原创 剑指offer 58_左旋转字符串(java)

面试题58 - II. 左旋转字符串注意考虑完全,比如n越界, 字符串长度等问题~~~public class Solution { public String LeftRotateString(String str,int n) { // 考点是 n的范围!!!! if(n <= 0 || str.length()<=1) return str; int n1 = n % str.length(); return

2020-05-26 16:30:16 141

原创 剑指offer 57_和为s的连续正数序列(java)

面试题57 - II. 和为s的连续正数序列思路: 滑动窗口import java.util.ArrayList;import java.util.Arrays;public class Solution { public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) { int i = 1; int j = 1; int s = 0;

2020-05-26 16:26:42 146

原创 剑指offerr 56只出现一次的数字_系列(java)

只出现一次的数字系列异或的性质两个数字异或的结果a^b是将 a 和 b 的二进制每一位进行运算,得出的数字。 运算的逻辑是如果同一位的数字相同则为 0,不同则为 1异或的规律任何数和本身异或则为 0任何数和 0 异或是 本身异或满足交换律。 即 a ^ b ^ c ,等价于 a ^ c ^ b136. 只出现一次的数字 1给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。class Solution {

2020-05-26 16:25:42 159

原创 剑指offer 55_平衡二叉树(java)

平衡二叉树-II输入一棵二叉树,判断该二叉树是否是平衡二叉树(它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1)。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树方法1:自顶向下思路分析:从根节点出发开始递归,依次判断左右子树的深度差是否<1,同时还要判断当前的左右子树是否平衡;递归条件:左右子树深度差<1且左右子树均为平衡树;终止条件:上述的非命题复杂度时间复杂度:O(NlogN) 每层节点的求深度操作O(N)*树的深度遍历O(logN)空间复杂度:O(

2020-05-26 16:24:10 170

原创 剑指offer 55_二叉树的深度(java)

面试题55 - I. 二叉树的深度思路: 递归找左右子树的深度。树的遍历深度优先dfs: 包括前序、中序、 后序。(一般对应递归的顺序)广度优先bfs: 层序遍历其中dfs方法:树的后序遍历 / 深度优先搜索往往利用 递归 或 栈 实现,本文使用递归实现。观察到: 二叉树的深度 = max(左子树的最大深度,右子树的最大深度)+ 1;##方法一 dfsdfs算法流程终止条件: 当 root​ 为空,说明已越过叶节点,因此返回 深度 00 。递推工作: 本质上是对树做后序

2020-05-26 16:21:35 131

原创 剑指offer 53_在排序数组中查找数字(java)

面试题53 - I. 在排序数组中查找数字 I统计一个数字在排序数组中出现的次数。考察如何优化 查找算法!思路 二分查找采用二分查找, 找出目标元素地左右边界。时间 O(NlogN)public class Solution { public int GetNumberOfK(int [] array , int k) { // 二分查找 给定元素的左右边界: 结果等于 (high - low +1) if(array.length <=0) r

2020-05-26 16:20:29 156

原创 简直offer 52_两个链表的第一个公共节点(java)

面试题52. 两个链表的第一个公共节点输入两个链表,找出它们的第一个公共结点。注意,返回的是公共节点!!!, 不是第一个节点值相同的节点~~思路 双指针–相遇使用两个指针 node1,node2 分别指向两个链表 headA,headB 的头结点,然后同时分别逐结点遍历,当 node1 到达链表 headA 的末尾时,重新定位到链表 headB 的头结点;当 node2 到达链表 headB 的末尾时,重新定位到链表 headA 的头结点。这样,当它们相遇时,所指向的结点就是第一个公共结点。pu

2020-05-26 16:18:34 148

原创 剑指offer 51_数组中的逆序对(java)

面试题51. 数组中的逆序对思路一 暴力法会超出时间限制!! 牛客中只能AC 50%public class Solution { public int InversePairs(int [] array) { int count = 0; for(int i = 0; i < array.length; i++){ for(int j = i+1; j < array.length; j++){

2020-05-26 16:17:28 125

原创 剑指offer 50_第一个只出现一次的字符(java)

面试题50. 第一个只出现一次的字符在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)思路一: 暴力法:时间: O(N^2)空间:O(N)public class Solution { public int FirstNotRepeatingChar(String str) { // 暴力法 int[] ans = new in

2020-05-26 16:16:38 126

原创 剑指49_丑数(java)

面试题49. 丑数我们把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数思路动态规划!!byKrahets丑数的递推性质: 丑数只包含因子 2, 3, 5 ,因此有 “丑数 == 某较小丑数 × 某因子” (例如:10 = 5×2)。设已知长度为 n 的丑数序列 x1, x2, …x_n。则 Xn+1 =

2020-05-26 16:15:35 152

原创 剑指offer45_把数组排成最小的数(java)

面试题45. 把数组排成最小的数思路:by jyd此题求拼接起来的 “最小数字” ,本质上是一个排序问题。排序判断规则: 设数组中任意两个数字的字符串格式为 x和 y ,则若拼接字符串 x + y > y + x,则 x > y;反之,若 x + y < y + x ,则 x < y;算法流程:初始化: 字符串列表 strsstrs ,保存各数字的字符串格式;列表排序: 应用以上 “排序判断规则” ,对 strs 执行排序;返回值: 拼接 str

2020-05-26 16:14:12 127

原创 j剑指offer43_1~n整数中1出现的次数(java)

题目输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。。思路1: 暴力穷举;从n开始, 统计n包含的1的个数,再统计n-1, n-2…1,每一个数字包含的1的个数;求和即可*时间: O(N^2) 在leetcode上会超时,在牛客网能通过~~public class Solution { public int NumberOf1Between1AndN_Solution(int

2020-05-26 16:13:11 182

原创 剑指offer42_连续子数组的最大和(java)

思路一: 贪心法用sum记录从前往后扫过的最大的连续子数组的和;用curSum记录某元素前面紧挨的数组的和;如果curSum小于0;说明该元素前面的子数组的和,都结果有负影响,将curSum更新为nums[i];4)如果curSum大于0,就把curSum更新为 curSum+nums[i];判断全局的Sum和curSum大小,更新全局的Sum;时间复杂度 O(n)class Solution { public int maxSubArray(int[] nums

2020-05-26 16:11:28 239 2

原创 剑指offer40_最小的k个数-(java) 多解法

面试题40. 最小的k个数注意leetcode和牛客网的区别!!!! 返回值的类型不一致;题目输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路1 — 直接调用排序算法!!!Array.sort(int[] a);其实现也是快速排序~import java.util.ArrayList;import java.util.Arrays;public class Solution { // 注意 牛客网中该题是返

2020-05-26 16:10:02 156

原创 剑指offer39_数组中出现次数超过一半的数字(java)

数组中出现次数超过一半地数字牛客网 - 数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。注意 在牛客网中,超过一半的数不一定存在!!!(需要判断存在与否)思路:用pre记录上一次访问的值,count表明当前值出现的次数,如果下一个值和当前值相同那么count++;如果不同count–,减到0的时候就要更换新

2020-05-26 16:08:30 145

原创 剑指offer37_序列化二叉树(java)

37 序列化二叉树题目描述请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。例如,我们可以把一个只有根节点为1的二叉树序列化为"

2020-05-26 16:06:51 143

原创 剑指offer33_二叉搜索树的后序遍历序列(java)

二叉搜索树的后序遍历序列递归地判断左右区间是否满足二叉搜索树的特征.public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(sequence == null || sequence.length == 0) return false; return help(sequence, 0, sequence.length-1); } // 划

2020-05-26 16:05:40 117

原创 剑指offer32_从上到下打印二叉树_题集

从上到下打印二叉树题集题目从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。分析考虑使用队列先进先出的特点;算法流程:特例处理: 当树的根节点为空,则直接返回空列表 [] ;初始化: 打印结果列表 res = [] ,包含根节点的队列 queue = [root] ;* BFS 循环: 当队列 queue 为空时跳出;出队: 队首元素出队,记为 node;打印: 将 node.val 添加至列表 tmp 尾部;添加子节点: 若 node 的左(右)子节点不为空,

2020-05-26 16:03:53 144

原创 剑指offer 34_二叉树中和为某一值的路径(java)

题目描述输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。解题策略先序dfs+回溯法 + 递归解题思路参考Krahets算法流程FindPath(TreeNode root,int target)函数参数:待判断的树,给定的和;返回值: 返回所有路径help(TreeNode root, int tar)递归参数: 当前节点 root ,当前目标值 tar。递归终止条件:若节点

2020-05-26 11:29:09 174

原创 解决ubuntu不能打出中文

解决ubuntu中不能输入中文的问题问题描述:在ubuntu中ibus下,虽然已经切换了中文模式,但怎么都打不出中文解决步骤:step1:点击system settings -&gt;点击language supportstep2: 改变 Keyboard input method system: fcitxstep3 :终端中输入sudo reboot 重启step4: 搜索 F...

2019-02-26 17:10:15 45538 10

转载 ssh: connect to host 192.168.6.129 port 22: Connection refusedj解决

Ubuntu下测试ssh时使用ssh localhost 命令,出现错误提示connect to host localhost port 22:Connection refused&nbsp;造成这个错误的原因可能是ssh-server未安装或者未启动。ubuntu 11.10 默认安装openssh-client,但是木有安装server&nbsp;运行 ps -e | grep ssh...

2019-02-19 11:23:01 1132

原创 coursera-Machine Learning--吴恩达-week4--学习笔记--神经网络

1 神经网络提出前面所学线性回归和逻辑回归,在面对以下问题时,并不能很好的画出分类边界: 这类问题是非线性的(多项式回归),但是这种函数会因为特征量的增多导致二次项数的剧增。 比如在图像识别中,一个50×50像素的图片,拥有的特征量为2500,那么它的二次项数为2500*2500/2,大约为3百万个。 基于以上情况,提出神经网络。2神经网络算法2.1 神经元神经网络由...

2018-08-11 11:25:34 469

原创 coursera-Machine Learning--吴恩达-week3--逻辑回归--学习笔记

1 分类 classification1.1分类描述前面学习的线性回归输出的预测值是连续的,但对于有些问题,比如判断一封邮件是否为垃圾邮件,肿瘤的恶性还是良性等问题,其分类的结果思离散的,对于这些问题,我们可以通过输出值y ϵ {0, 1} 来表示,其值不再连续,而是离散,故前面的线性回归模型不再适用,需要提出新的模型。1.2 分类模型表示根据前章节的学习思路,依旧利用假设函数...

2018-08-10 22:55:30 547

原创 coursera Machine Learning--吴恩达--week2 学习笔记

1多变量线性回归(对比单变量线性回归)1.1多变量假设:输入为多维特征。1.2拟合函数: 这里令x0 = 1,将变量向量化,向量化的过程如下: 1.3 损失函数和梯度下降对比单变量,损失函数知识参数变多: 梯度下降法也没有变,只是需要同时更新的参数变多: - 参数变多,加之样本数量变多,原来的批梯度下降收敛速度慢,改进方式为:随机梯度下降...

2018-08-10 20:53:52 320

原创 coursera Machine Learning--吴恩达--week1 学习笔记

1机器学习分类1.1监督学习 Supervised learning(已知经验数据以及其对应的标签)回归 regression (连续值)分类 classidication(离散值)1.2非监督学习 Unsupervised learning(有以往数据,但不知道他们的分类)聚类 clustering非聚类 non-clustering2单变量线...

2018-08-10 17:49:01 290

原创 吴恩达 Machine Learning week4--quiz4--Neural Networks: Representation课后习题

Which of the following statements are true? Check all that apply.Suppose you have a multi-class classification problem with three classes, trained with a 3 layer network. Let a^{(3)}1 = (h\Theta(...

2018-08-10 15:07:04 2480

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除