自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指Offer 59. 滑动窗口的最大值

解法一:考虑到先在第一个窗口内找到最大值,每次右移窗口时,将新增的那个数与原窗口最大值进行比较,若比上一个窗口的最大值还大,那么毋庸置疑新进的数为本窗口的最大值。否则重新在新窗口内进行比较寻找最大值。(注:此方法在牛客只有14/21用例通过,会报超时)import java.util.*;public class Solution { public ArrayList<Integer> maxInWindows(int [] num, int size) { ..

2022-05-21 15:26:09 102

原创 基数排序java实现

public static void radixSort(int[] arr) { if (arr == null || arr.length < 2) { return; } radixSort(arr, 0, arr.length - 1, maxbits(arr));}public static int maxbits(int[] arr) { int max = Integer.MIN_VALUE; for (int i = 0;.

2022-02-16 02:52:30 431

原创 O(NlogN)的排序算法总结

小知识点补充1. 对于求中点mid = (L+R)/2,若数组开的长度比较大,L+R可能会溢出。所以可以写成:mid = L+(R-L)/2。或者更简化的,mid = L+((R-L) >> 1)。此处右移一位等于除以二,就是求中点的意思,并且右移比直接除以2要快。2. master公式:T(N) = a * T(N/b) + o(N^d),其中,N为数据规模,a为调用子问题次数,N/b为子问题的规模(所有子问题规模必须相同),o为除了子问题的调用之外,剩下过程的时间复杂度。归并

2022-02-14 02:40:46 234

原创 剑指Offer - 反转链表

Nowcoder题目描述给定一个单链表的头结点pHead,长度为n,反转该链表后,返回新链表的表头。数据范围: n≤1000要求:空间复杂度 O(1) ,时间复杂度 O(n) 。解题思路栈方法利用栈的特性,将链表依次存入栈中。再依次取出建立新的链表。需要注意的点:建立新链表时,最后一个取出的结点就是最开始的头结点,比如原链表是1→2→3,新链表应当是3→2→1,但是取出的1的next仍然指向2,会造成闭环。所以需要将最后一个取出的结点的next赋null。import ja

2022-01-06 01:45:45 400

原创 剑指Offer - 翻转单词序列

思路一先将原字符串以空格分割,然后建立字符串数组,再借用栈实现翻转import java.util.Stack;public class Solution { public String ReverseSentence(String str) { Stack<String> stack = new Stack<>(); String[] strArr = str.split(" "); StringBuil...

2022-01-06 01:34:20 144

原创 剑指Offer - 栈的压入、弹出序列

思路首先明确一点,当入栈序列和出栈序列确定时,操作序列也就是唯一确定的。本题可增加一个辅助栈,来模拟整个操作。以描述为例,入栈序列是1,2,3,4,5;出栈序列是4,5,3,2,1。那么可确定,1,2,3是按序压入栈中的,当压入4时,因为4=出栈序列的第一个数,所以实际操作中4压入之后立刻弹出。对应辅助栈的操作,首先入栈1,2,3,因为这三个数不等于出栈的第一个数,然后入栈4,此时等于出栈的第一个元素,所以出栈顺序向后移一位,而此时入栈5,等于出栈序列的第二个数,那么5也是压入再弹出。以...

2022-01-04 18:30:27 177

原创 剑指Offer - 用两个栈实现队列

思路依然是分为入队栈和出队栈,遵循两个原则:1. 入队栈转入出队栈时,保证出队栈为空 2. 转移后,保证入队栈为空。若要pop时发现出队栈不为空,不需转移,直接pop即可,否则会破坏顺序。import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack&..

2022-01-04 17:10:07 1374

原创 程序员代码面试指南 - CD7 用递归函数和栈逆序一个栈

CD7思路要求用递归实现,所以只能用一个栈,不能再双栈实现逆序了。回顾下递归函数的三要素,第一要素:明确你这个函数想要干什么;第二要素:寻找递归结束条件;第三要素:找出函数的等价关系式,即不断缩小参数的范围,缩小之后,我们可以通过一些辅助的变量或者操作,使原函数的结果不变。对于递归有没有什么好的理解方法?对于该题,首先可想到通过越来越小的栈来转置(递归函数之一),但是为了实际操作,需要再写一个递归函数,目的是返回并移除栈底元素。返回并移除栈底元素的函数思想结束条件:pop之后栈.

2022-01-04 01:39:16 3600

原创 程序员代码面试指南 - CD6 由两个栈组成的队列

思路栈的特点:先进后出,队列的特点:先进先出。因此可想到用两个栈,其中一个正序存储,另一个逆序存储,以此实现队列的特点。使用两个栈,入队栈stackPush和出队栈stackPop;入队使用入队栈,出队使用出队栈;但要注意两点: 1. 转移元素前出队栈为空 2. 转移元素后入队栈为空。否则结果将出错。import java.util.Stack;import java.util.Scanner;class MyQueue { private Stack<Int

2022-01-03 21:22:53 3677

原创 程序员代码面试指南 - CD5 设计getMin功能的栈

链接思路1设计两个栈,一个栈stackData负责存取原始数据,另一个栈stackMin负责存取最小数来实现getMin功能。1)push规则:假设当前数据为newNum,先将其压入stackData,然后判断和stackMin的栈顶元素哪一个更小,若newNum小于等于,则也将其压入stackMin,否则stackMin不压入元素。若stackMin为空,newNum也压入stackMin。2)pop规则:先从stackData中弹出栈顶元素,然后判断这个弹出值和stackMin的栈.

2022-01-03 17:28:51 3283 1

原创 剑指Offer - 从尾到头打印链表

Nowcoder题目描述输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。解题思路用一个栈存储链表,出栈即为逆序结果。/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import .

2021-12-23 19:31:43 225

原创 剑指Offer - 替换空格

Nowcoder题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路创建一个新字符串,将老字符串一次赋值加入新字符串,遇到空格则赋值%20。public class Solution { public String replaceSpace(StringBuffer str) { int i = 0; StringBuffer st

2021-12-23 17:09:31 160

原创 剑指Offer - 二维数组中的查找

Nowcoder题目描述在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target= 7,返回true。给定target=3,返回false。数据范围:矩阵的长宽满足 0≤n,m≤500 , 矩阵中的值...

2021-12-23 16:37:01 558

原创 剑指Offer - 数组中重复的数字

Nowcoder题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中第一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。返回描述:如果数组中有重复的数字,函数返回true,否则返回false。如果数组中有重复的数字,把重复的数字放到参数duplication[0]中。(ps:duplication已经初始化,可以直接赋值使

2021-12-23 16:28:20 76

原创 常用简单排序算法Java版

选择排序思想:首先找到数组中最小的那个元素,然后,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。public static void selectionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = 0; i &lt

2021-12-23 16:21:17 69

原创 Python学习笔记-函数

def describe_pet(pet_name, animal_type='dog'): """Display information about a pet.""" print("\nI have a " + animal_type + ".") print("My " + animal_type + "'s name is " + pet_name.title() + ".") # A dog named Willie.describe_pet('willie'.

2021-08-20 00:23:56 136

原创 问题 E: C语言11.8

题目描述有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩。读入这10个学生的数据,要求输出3门课程的总平均成绩,以及个人平均分最高的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。输入共有10行,每行包含了一个学生的学号(整数)、名字(长度不超过19的无空格字符串)和3门课程的成绩(0至100之间的整数),用空格隔开。输出第一行包含了3个实数,分别表示3门课程的...

2018-11-30 21:18:47 216

原创 问题 B: C语言11.2

题目描述定义一个结构体student,存储学生的学号、名字、性别和年龄,读入每个学生的所有信息,保存在结构体中,并输出。结构体student的定义如下:struct student {    int num;    char name[20];    char sex;    int age;};本题要求使用指向结构体数组的指针进行输入和输出。输入第一行有一个整数n,表示...

2018-11-30 19:31:19 230

原创 问题 A: C语言11.1

题目描述完成一个对候选人得票的统计程序。假设有3个候选人,名字分别为Li,Zhang和Fun。使用结构体存储每一个候选人的名字和得票数。记录每一张选票的得票人名,输出每个候选人最终的得票数。结构体可以定义成如下的格式:struct person {    char name[20];    int count;}leader[3] = {“Li”, 0, “Zhang”, 0, “Fu...

2018-11-30 04:07:33 151

原创 问题 E: C语言10.16

题目描述输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求用3个函数实现,分别为输入10个数、进行处理、输出10个数。要求使用指针的方法进行处理。输入用空格隔开的10个整数。输出输出进行题目描述操作之后的10个整数,每个整数之后输出一个空格。请注意行尾输出换行。样例输入1 5 2 4 9 0 3 8 7 6样例输出0 5 2 4...

2018-11-29 21:52:49 237

原创 问题 D: C语言10.15

题目描述输入3个字符串,按从小到大的顺序输出。要求使用指针的方法进行处理。输入3行,每行一个用字符串。保证每个字符串的长度不超过20。输出按从小到大的顺序输出这3个字符串,每个字符串一行。请注意行尾输出换行。样例输入ChinaCLOCKdeal样例输出CLOCKChinadeal#include&lt;stdio.h&gt;#inclu...

2018-11-29 21:17:52 202 1

原创 问题 B: 习题7-7 复制字符串中的元音字母

题目描述写一个函数,将一个字符串中的元音字母复制到另一个字符串中。在主函数中输入一个字符串,通过调用该函数,得到一个有该字符串中的元音字母组成的一个字符串,并输出。输入一个字符串(一行字符)。输出该字符串所有元音字母构成的字符串。行尾换行。样例输入CLanguage样例输出auae提示可以采用如下函数原型void vowels(char s1[]...

2018-11-25 03:06:51 860

转载 问题 J: 例题6-9 字符串求最大值

题目描述从键盘上输入3个字符串,求出其中最大者。输入输入3行,每行均为一个字符串。输出一行,输入三个字符串中最大者。样例输入EnglandChinaAmerica样例输出England---------------------作者:Szu-Hisen来源:CSDN原文:https://blog.csdn.net/weixin_42127158...

2018-11-25 01:35:59 402

原创 问题 C: 习题6-6 杨辉三角

题目描述按要求输入如下格式的杨辉三角11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1最多输出10层输入输入只包含一个正整数n,表示将要输出的杨辉三角的层数。输出对应于该输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开样例输入5样例输出11 11 2 11 3 3 11 4 6 4 1#...

2018-11-24 20:03:03 532

原创 问题 I: 习题5-10 分数序列求和

题目描述有如下分数序列2/1,3/2,5/3,8/5,13/8,21/13…求出次数列的前20项之和。请将结果的数据类型定义为double类型。输入无输出小数点后保留6位小数,末尾输出换行。样例输入无样例输出32.660261#include&lt;stdio.h&gt;int main(){ double sum=3.5; ...

2018-11-23 20:25:00 935

转载 问题 H: 例题5-8 Fibonacci数列

题目描述输入一个正整数n,求Fibonacci数列的第n个数。Fibonacci数列的特点:第1个数和第2个数均为1。从第3个数开始,概述是前面两个数之和。即:要求输入的正整数n不超过50.输入一个不超过50的正整数 包括1~50输出Fibonacci数列的第n个数,末尾输出换行。样例输入20样例输出6765---------------------作者:托帕...

2018-11-23 19:50:25 1246

原创 问题 G: 例题5-7 求圆周率pi的近似值

题目描述用如下公式π/4=1-1/3+1/5-1/7...求圆周率PI的近似值,直到发现某一项的绝对值小于10-6为止(该项不累加)。要求输出的结果总宽度占10位,其中小数部分为8位。程序中使用浮点型数据时,请定义为双精度double类型。如果需要计算绝对值,可以使用C语言数学库提供的函数fabs,如求x的绝对值,则为fabs(x).输入无输出PI=圆周率的...

2018-11-23 19:04:47 1569

原创 问题 F: 例题5-6 矩阵输出

题目描述输出以下4*5的矩阵1 2 3 4 52 4 6 8 103 6 9 12 154 8 12 16 20要求使用循环实现,注意每行输出5个数字,每个数字占3个字符的宽度,右对齐。输入无输出每行输出5个数字,每个数字占3个字符的宽度,右对齐。样例输入无样例输出1 2 3 4 52 4 6 8 103 6 9 12 154...

2018-11-23 18:20:37 812

原创 问题 C: 例题4-3 比较交换3个实数值,并按序输出

题目描述有3个整数a, b, c,由键盘输入,输出其中最大的数。输入以空格分割的三个整数。输出三个数中的最大值,末尾换行。样例输入1 3 2样例输出3#include&amp;lt;stdio.h&amp;gt;int main(){ double a,b,c,t; scanf(&quot;%lf%lf%lf&quot;,&amp;amp;a,&amp;amp;b,&amp;amp;c

2018-11-23 03:02:41 399

原创 今天是春节

新的一年新的目标,加油

2016-02-08 01:17:53 202

空空如也

空空如也

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

TA关注的人

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