👏作者简介:大家好,我是爱敲代码的小黄,阿里巴巴的Java开发工程师,博客专家,阿里云专家博主 📕系列专栏:Spring源码、Netty源码、Kafka源码、JUC源码、dubbo源码系列 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 🍂博主正在努力完成2023计划中:以梦为马,扬帆起航,2023追梦人 文章目录 双非本两年经验,我是如何拿下阿里、百度、美团、滴滴、快手、拼多多等大厂offer的? 一、引言 二、背景 三、面试情况 四、面试流程 1、投递简历 2、评审简历 3、同事面 4、主管面 5、总监面 6、HRBP面 7、其余 五、技术...

1.题目描述 2.题目解析 首先最先想到的应该是暴力,也就是直接跑3层循环,暴力解出ans的最大值 其次,此题是一个动态规划,我们来看一张图:相当于我们求的是斜着的这一部分最多可以连续多长,此时动规的公式就比较明显了,array[i][j]=array[i-1][j-1]+1; 最后是一种解法:滑动窗口,顾名思义,也就是通过保持A不变,滑动B,保持B不变,滑动A,最后取出其中最大的ans; 3.题目代码 1.动规 publicstaticintfindLength1(int[]A,int[]B){ intans=0; int[][]array=newint[A.length+...

  MT2ylF86YBZh   2023年11月02日   59   0   0 算法leetcodei++Math动态规划

1.题目描述 2.题目分析 这个题目类似于【剑指offer】-二维数组的查找-01/67 在此题的基础上进行一些扩展,题目要求我们找到矩阵中第K小的元素,也就是在115的范围中,找到第K小的数字。 我们对115进行二分,用mid来判断当前矩阵中小于等于mid的的有多少(count),如果count小于K的话,也就是在证明当前的元素过于小,所以,需要left=mid+1;如果count大于等于K的话,也就是证明当前的元素过于大或者正好,所以,需要right=mid。 这里比较困惑的一点是,怎么证明最后返回的left一定在数组内,咱们可以这样想,首先对于第K小的元素,比如13,我们用二分找到...

1.题目描述 统计一个数字在排序数组中出现的次数。 2.题目分析 题主一开始的方法:看见有序,使用二分,查找到target,向前向后分别遍历到不等于target的数字,因为数组中的target出现的次数是不确定的,所以,可能查找到n次,相当于O(n); 面试中,这种写法会被paas掉,所以我们需要用二分查找找到第一次出现target的下标,最后一次出现target的下标, 对于target出现的第一次下标,采用以下方式当mid0的时候,也就是证明当前的数是从下标0开始的,则直接返回0(mid)为了防止数组的越界,我们需要使当前的mid>0且array[mid-1]!=key对于:ri...

  MT2ylF86YBZh   2023年11月02日   50   0   0 数组数据结构算法二分查找java

一、题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1) 二、题目分析 如果给定的数字都是正数,则直接相加就可以 如果给定的数组都是负数,则需要找出其中一个最大的数字 如果给定的数组既有正数又有负数...

  MT2ylF86YBZh   2023年11月02日   44   0   0 数组数据结构算法i++java

1.题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 2.输入描述 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 3.题目分析 经典的一道全排列算法的题目 全排列算法 这里以A{a,b,c}为例,来说明全排列的生成方法,对于这个集合,其包含3个元素,所有的排列情况有3!=6种,对于每一种排列,其第一个元素有3种选择a,b,c,对于第一个元素为a的排列,其第二个元素有2种选择b,c;第一个元素为b的排列,第二个元素也有2种选择a,c...

  MT2ylF86YBZh   2023年11月02日   50   0   0 数据结构bc算法全排列字符串

1.题目描述 2.题目分析 我们可以看到,假如两个链表有交点的话,他们的图和实例一样 这时候,我们观察图1的路线:a1—>c1—>c3—>b1—>c1b1—>c1—>c3—>a1—>c1可以看出来,这两条路线的值是相等的 题目的思路就是,A先走自己的路,再走B的路,B也亦然,最后,如果两个链表有交点,一定会在交点停下,否则,则会在null停下 3.题目代码 publicclassSolution{ publicListNodegetIntersectionNode(ListNodeheadA,ListNodeheadB){ ListNod...

  MT2ylF86YBZh   2023年11月02日   43   0   0 程序猿链表数据结构算法

1.题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student.aamI”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“Iamastudent.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? 2.题目分析 个人做法:题目给定一个字符串““student.aamI””,让你对其进行操作,变成“Iamastudent.”,用ArrayList按空格分割字符串进行储存,然后ArrayList倒序输出存入新建的string中...

  MT2ylF86YBZh   2023年11月02日   27   0   0 数据结构i++字符串java

数据结构实验之栈与队列五:下一较大值(一) TimeLimit: 1000ms MemoryLimit: 65536KiB Submit Statistic ProblemDescription 对于包含n(1<=n<=1000)个整数的序列,对于序列中的每一元素,在序列中查找其位置之后第一个大于它的值,如果找到,输出所找到的值,否则,输出-1。 Input  输入有多组,第一行输入t(1<=t<=10),表示输入的组数; 以后是t组输入:每组先输入n,表示本组序列的元素个数,之后依次输入本组的n个元素。 Output...

  MT2ylF86YBZh   2023年11月02日   106   0   0 #includei++Memory

1.题目描述 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例1:输入:121输出:true 示例2:输入:-121输出:false解释:从左向右读,为-121。从右向左读,为121。因此它不是一个回文数。 示例3:输入:10输出:false解释:从右向左读,为01。因此它不是一个回文数。 2.题目分析 经典的回文题目,判断左右是否相等,相等的话返回true,否则返回false 第一种方法:转为字符串(运用java的String.valueOf(x))进行比较;第二种方法:直接运用整数进行比较,将整数num的每一位分离出来,进行判断是否为回文 ...

  MT2ylF86YBZh   2023年11月02日   97   0   0 leetcode算法字符串i++回文数

1.题目描述: 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 2.题目分析 2.1相似题型 一般的思维来讲,该题直接建立链表,然后在建立链表的时候,直接建立的是反转的链表,题型链接如下:数据结构实验之链表二:逆序建立链表 该题的要求是返回一个ArrayList(数组),不能简单的使用输入输出实现 2.2c栈的用法 push(x)–压一个数到栈顶 pop()–移除栈顶的元素,不返回任何对象 top()–返回栈顶端的元素 getMin()–检索栈中的最小值 2.3本题做法 建立一个vector类型的数组(result) 建立一个栈(stack-arr),用来做链表和数...

  MT2ylF86YBZh   2023年11月02日   30   0   0 ci数据结构数组链表

1.题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置,如果没有则返回-1(需要区分大小写).(从0开始计数) 2.题目解析 给定一个字符串,让你求这个字符串只出现一次的字符,我们一般的想法都是遍历一遍字符串,依次和后面的相比较,如果一样的话,就去掉。这里的时间复杂度为(Onn) 我们可以通过java中的hashmap去做,遍历一遍字符串,判断这个字符在不在hashmap中,如果不在,则输入map.put(str.charAt(i),1);如果在,则intx=map.get(str.charAt(i));map....

  MT2ylF86YBZh   2023年11月02日   113   0   0 leetcode字符串i++java

文章目录 题目链接 题目简介 题目解析 题目代码 题目链接 909.蛇梯棋 题目简介 NxN的棋盘board上,按从1到NN的数字给方格编号,编号从左下角开始,每一行交替方向。 例如,一块6x6大小的棋盘,编号如下: r行c列的棋盘,按前述方法编号,棋盘格中可能存在“蛇”或“梯子”;如果board[r][c]!=-1,那个蛇或梯子的目的地将会是board[r][c]。 玩家从棋盘上的方格1(总是在最后一行、第一列)开始出发。 每一回合,玩家需要从当前方格x开始出发,按下述要求前进: 选定目标方格:选择从编号x+1,x+2,x+3,x+4,x+5,或者x+6的方格中选出一个目标方格...

一、题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 二、题目分析 这个数字存在次数一定是最多的,我们可以用守擂法 定义一个num(代表当前的数字)和sum(代表当前的次数) 如果遇见一样的,就进行sum,不一样的就sum–,同时要看sum的值,如果sum为0的话,表示这个数字不是我们要找的,需要将num的值进行替换 最后,重新遍历一遍数组,找出这个最多存在次数的数字的存在次数(count),将count与array.l...

  MT2ylF86YBZh   2023年11月02日   37   0   0

文章目录 线程和进程 基础概念 线程和进程的区别 线程的状态 synchronize 修饰的不同 不能锁什么 调用方法 可重入锁 为什么synchronize是可重入锁呢 当线程出现异常 底层实现原理 流程 自旋锁和重量锁的比较 线程和进程 基础概念 线程:是CPU调度的最小单位 进程:是资源分配的最小单位 线程和进程的区别 一个进程中包括多个线程 进程消耗的资源比线程消耗的资源较多 线程之间的数据可以共享,进程之间的数据没办法共享 一个进程挂了不影响其他的进程,但一个线程挂了,可能会影响其他的线程 线程的状态 创建:刚开始创建 就绪:准备好线程启动...

1.题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成“a”,1翻译成“b”,……,11翻译成“l”,……,25翻译成“z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例1:输入:12258输出:5解释:12258有5种不同的翻译,分别是"bccfi",“bwfi”,“bczi”,“mcfi"和"mzi” 2.题目分析 这个题目类型和跳台阶差不多,一阶或者两阶的跳,求到N阶有多少种方法 对于12258来说,可拆分为以下几部分:12258、12258、12258、12258、12258 相当于从1开始往后跳,一个数或者两个数(注意取...

  MT2ylF86YBZh   2023年11月02日   99   0   0 算法字符串跳台阶bcleetcode

你好,我是小黄,一名独角兽企业的Java开发工程师。感谢茫茫人海中我们能够相遇,俗话说:当你的才华和能力,不足以支撑你的梦想的时候,请静下心来学习,希望优秀的你可以和我一起学习,一起努力,实现属于自己的梦想。 文章目录 一、什么是观察者模式? 二、为什么要用观察者模式? 三、如何实现观察者模式? 四、总结 一、什么是观察者模式? 观察者一般可以看做是第三者,比如在学校上自习的时候,大家肯定都有过交头接耳、各种玩耍的经历,这时总会有一个“放风”的小伙伴,当老师即将出现时及时“通知”大家老师来了。再比如,拍卖会的时候,大家相互叫价,拍卖师会观察最高标价,然后通知给其它竞价者竞价,这就...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~