牛客网和LeetCode习题
文章平均质量分 80
奇幻岛
这个作者很懒,什么都没留下…
展开
-
算法之《动态规划》练习解析
动态规划概念篇定义:动态规划是分治思想的延伸,通俗一点来说就是大事化小,小事化无的艺术。通过拆分问题、定义问题状态和状态间的关系,让问题用递推的方式得到结局;特点和考虑维度:①把原来的问题分解成了几个相似的子问题。② 所有的子问题都只需要解决一次。③ 储存子问题的解。动态规划的本质,是对问题状态的定义和状态转移方程的定义动规一般都需要和数组搭配使用动态规划问题一般从以下四个角度考虑:状态定义、状态间的转移方程定义、状态的初始化、 返回结果适用场景:最大/最小值 、可行不可行、是不是、方案原创 2020-08-17 14:39:56 · 611 阅读 · 0 评论 -
【五种方法解决】找出数组中出现次数超过数组长度一半的数字
剑指offerJZ28:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。这道题是在面试时常问的一道题,有多种解法,我们分别看一下;方法一:利用map利用map的key -value模型来存放arr[i]和相对应出现的次数,最后用次数去跟数组长度一半去比较,大于则就是;比如1,2,3,2,2,2,5,4,2;就是1出现一次、2出现5次、3.4.原创 2020-08-04 11:06:48 · 13890 阅读 · 7 评论 -
来看21届IT学子应该如何备战秋招?
写在前面:今天是2020年7月14,离正式秋招可能就两个月时间了。睡了个午觉醒来脑子里突然就在想怎样才能在秋招中找到一份满意的工作,决定把自己所想写下来;这篇文章写给自己同时也写给即将找工作的2021届各位幸运宝宝 ^ _ ^一、有计划有目标的提高自身实力**关键词:牛客 笔试 算法 计算机基础 **我本人现在就是菜鸟一个,我相信大多数的我们都是普通人,两个月的时间说要奋斗成大牛,这好像有点扯,但我觉得两个月的时间把握好了,有计划地充实的过每一天,找一份自己满意的工作应该还是有可能的,原创 2020-07-14 15:23:07 · 2163 阅读 · 12 评论 -
【剑指offer@JZ41--JZ50】
JZ41:和为S的连续正数序列题目描述:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?解题思路:因为要连续,所以求的的这个序列公差为1(根据等差数列的求和公式:S = (1 + n) * n / 2),并且中间值就是这段数列平均值的原创 2020-06-27 15:55:23 · 372 阅读 · 0 评论 -
下面关于程序编译说法正确的是()
A:注意java编译成的是字节码,(而不是直接的二进制机器码。不然要JVM是吃干饭的嘛),被JVM翻译为机器码,所谓的一次编程多平台应用B:java源文件生成的是class文件,与系统无关C:字节码和机器码不是一回事,java运行时字节码才会被jvm翻译成机器码,所以说java是解释性语言。D:jvm的版本是会影响的,就像这衣服你能穿不代表他能穿啊...原创 2020-06-11 11:18:14 · 3695 阅读 · 0 评论 -
【腾讯经典考点】出现次数超过一半的数
老题目了,有n个数,其中有一个数出现的次数超过n/2,如何快速找出这个数思路一排序,如果一个数组中有一个次数出现的次数超过数组长度的一半了,那排序之后这个数一定在mid位置,返回mid位置的数就ok了public static int solution1(int[] b){ //O(nlgn) Arrays.sort(b); int start=0,end=b.length-1; int mid=(end-start)/2;原创 2020-07-06 22:31:49 · 321 阅读 · 1 评论 -
【剑指offer@JZ31--JZ40】
JZ31:从1到n,1出现的次数题目描述:1~13中包含1的数字有1、10、11、12、13因此共出现6次,(从1 到 n 中1出现的次数?)。解题思路:把这个数转化成字符数组,逐个去遍历统计public class Solution { public int NumberOf1Between1AndN_Solution(int n) { int count=0; while(n>0){ String str=String.valu原创 2020-06-24 16:53:03 · 301 阅读 · 0 评论 -
【剑指offer@JZ21--JZ30】
JZ21:栈的压入弹出序列题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路:新创建一个栈,把第一个数组压栈,如果第二个数组的元素和栈内的元素相等就弹出,遍历完之后,如果栈内为空,则说明是它弹出的一个序列import java.util原创 2020-06-22 22:38:55 · 263 阅读 · 0 评论 -
【剑指offer@JZ11--JZ20】
JZ11:二进制中1的个数题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示解题思路:每次 n & (n-1) 都会使得二进制数据的最右边的一个1变为0,所以有多少个1就会执行循环多少次public class Solution { public int NumberOf1(int n) { int count=0; while(n!=0){ count++; n=n&(n-1原创 2020-06-20 15:39:56 · 289 阅读 · 1 评论 -
【剑指offer@JZ1--JZ10】
以前总是断断续续的刷剑指offer,现在准备以10道题为一组进行整理分析方便复习查看,按牛客网上剑指offer的题号进行排序,欢迎浏览。JZ1:二维数组中的查找题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路:这个题相对比较简单,两个for循环,一个控制数组长度,一个控制每个arr[i]的长度,找到就返回true;public static原创 2020-06-20 15:39:34 · 335 阅读 · 0 评论 -
【牛客网】输出最小的K个数
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路:给数组排个序,把前K个输出import java.util.Arrays;import java.util.ArrayList;public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayLis原创 2020-06-11 15:10:20 · 364 阅读 · 2 评论 -
【剑指offer】 数组中只出现一次的数字
思路:用set集合的方法去掉重复元素,把不同的两个用add方法加到set里面,再用ArrayList的get方法取得import java.util.HashSet;import java.util.Set;import java.util.ArrayList;public class Solution { public void FindNumsAppearOnce(int []...原创 2020-03-03 23:46:35 · 102 阅读 · 0 评论 -
【剑指pffer】栈的压入弹出序列
思路:新创建一个栈,把第一个数组压栈,如果第二个数组的元素和栈内的元素相等就弹出,遍历完之后,如果栈内为空,则说明是它弹出的一个序列import java.util.ArrayList;import java.util.Stack;public class Solution { public boolean IsPopOrder(int [] pushA,int [] popA) {...原创 2020-03-02 13:37:46 · 167 阅读 · 0 评论 -
【剑指offer】:两个栈实现队列
栈:先进后出 队列:先进先出先将元素压入stack1,再反序到stack2中,在·一一弹出,就实现了队列import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 =...原创 2020-03-01 22:23:02 · 80 阅读 · 0 评论 -
【剑指offer】实现包含min函数的栈
思路:定义两个栈来实现,比如放第一个数字3,stack1正常添加,stack2为空,此时也正常添加,添加第二个数字2,stack1添加,stack2不添加,添加第三个数字1,stack1正常添加,由于(node < stack2.peek()),stack2也添加,最终pop出来的stack2.peek()就是最小的import java.util.Stack;public class ...原创 2020-03-01 18:27:48 · 122 阅读 · 0 评论 -
【牛客网】反转链表
public class Solution { public ListNode ReverseList(ListNode head) { ListNode result=null; ListNode cur=head; while(cur!=null)//一直给新链表做头插 { ListNode nex...原创 2020-03-01 17:53:37 · 194 阅读 · 0 评论 -
输出链表的倒数第k个节点
public class Solution { public ListNode FindKthToTail(ListNode head,int k) { if(head==null||k<0){ //条件不符合直接返回空 return null; } ListNode cur=head; int ...原创 2020-03-01 17:48:20 · 134 阅读 · 0 评论 -
另类加法
题目描述:不允许使用+返回两个数的和。比如给1,2。返回3import java.util.*;public class UnusualAdd { public int addAB(int A, int B) { while(B!=0){ int sum=A^B; int n=(A&B)<<1; //计...原创 2019-11-22 14:34:54 · 124 阅读 · 0 评论