自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

U&W

  • 博客(252)
  • 收藏
  • 关注

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

剑指 Offer 06. 从尾到头打印链表这个题目就是多了个数组返回,如果不是数组,本来是想直接把链表的元素放到list里面,然后reverse一下的。因为题目中要数组,所以连reverse这个操作都不需要了,在list转array的时候,倒着往数组写值就可以了。class Solution { public int[] reversePrint(ListNode head) { List<Integer> list = new ArrayList<&

2022-03-20 17:34:07 510

原创 剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格这个题目考的是StringBuilder,把不可变的字符串用可变的StringBuilder来重写。这里面还有个charAt()函数,也可以记一下。class Solution { public String replaceSpace(String s) { StringBuilder sb = new StringBuilder(); for(int i = 0;i<s.length();i++){

2022-03-20 17:32:46 152

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

剑指 Offer 04. 二维数组中的查找拿到这个题目,如果直接暴力的话,的确是很简单的,直接来一次遍历就可以了,但这样的话,题目中给的行和列都是递增这个条件就浪费掉了,如果是一维数组,直接使用二分法应该就可以了。考虑到二分法的话,感觉对行和列来进行二分都不太好,根据题目,我可以得到一个结论,那就是右下角的元素是最大的。所以我在想,可不可以经过二分法,将我需要判断的元素精确定位到某行或列,然后对这一行和列进行查找,效率会高一些。这样写应该是可以做,但是好像还是很麻烦。进行了3次二分查找才找出来,对角

2022-03-20 17:30:50 345

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

剑指 Offer 03. 数组中重复的数字找的是任意一个重复的数字,所以只找重复就可以了。首先我想到的是建一个数组,当输入2的时候,我就把下标为2 的位置填入1,最后遍历一遍,这样做甚至是可以把所有的数字出现次数打印出来。如果随便找一个,我不需要把这个流程走完,只需要在给数组赋值的时候,进行一次判断,如果为1,就可以直接返回了。class Solution { public int findRepeatNumber(int[] nums) { int len =

2022-03-20 17:20:35 284

原创 《剑指Offer》--JZ7 斐波那契数列

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1。C++class Solution {public: int Fibonacci(int n) { if(n == 0) return 0; else if( n==1 || n == 2) return 1; else return Fibonacci(n-1) + Fibonacci(n-2); }};这样递归

2021-06-30 22:14:51 108

原创 1020 Tree Traversals (25分)

Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversal sequence of the cor...

2020-04-04 14:30:06 103

原创 后序中序求前序

已知后序与中序输出前序(先序):后序:3, 4, 2, 6, 5, 1(左右根)中序:3, 2, 4, 1, 6, 5(左根右)分析:因为后序的最后一个总是根结点,令i在中序中找到该根结点,则i把中序分为两部分,左边是左子树,右边是右子树。因为是输出先序(根左右),所以先打印出当前根结点,然后打印左子树,再打印右子树。左子树在后序中的根结点为root – (end – i + 1),即为当前根结点...

2020-04-04 14:08:04 2881

原创 algorithm下的几个函数

fill()fill()可以把数组或者容器中的一段区间赋值为某个相同的值,和memset不同,这里的赋值可以使数组类型对应范围中的任意值。PS:终于不用循环遍历赋值了~~int a[5] = {1,23,3,4,5};fill(a,a+5,233)//将a[0]到a[4]全部赋值为233next_permutation()next_permutation()给出一个序列在全排列...

2020-03-26 21:26:38 124

原创 pair的常见用法

pair实际上可以看做一个内部有两个元素的结构体,且这两个元素的类型是可以指定的。struct pair{ typeName1 first; typeName2 second;};要是用pair就要添加头文件#include<utility> 还需要using namespace std;不过map的内部实现涉及到pair,所以如果导入map可以不用导入ut...

2020-03-26 21:05:41 464

原创 queue、priority_queue与stack简单使用

queue是队列#include<iostream>#include<queue>using namespace std;int main(){ queue<int> q; for(int i = 1;i<=5;i++){ q.push(i);//push(i)来将i压进队列,因此依次入队1,2,3,4,5 } cout<&...

2020-03-26 20:44:50 142

原创 map简单使用

刷题遇到好多时候都在使用map,索性今天就整理一下.vector是向量,那map是什么呢?map翻译为映射.比如定义一个数组,int a[10],就是定义了一个int 到 int 的映射.所以,看到局限性了吧,用数组定义,映射关系确定,都是从int类型映射到其他类型,那别的需求怎么办?我想要从string映射到int,用数组是没法实现了,由此,map出现了.map定义map<k...

2020-03-24 07:13:27 250

原创 set简单使用

set简单使用set是什么呢??翻译为集合.是一个内存自动有序且不含重复元素的集合.set定义和vector的定义方法一样set<int> s;//其实大部分stl都是这样定义的set<int> s[100];//二维的也是这样定义set元素访问:set只能通过迭代器访问!!!set<int>::iterator it;...

2020-03-24 07:09:15 175

原创 vector简单使用

Vector定义其实vector并不难,就是别用混了就行了。vector<int> v; //这是定义一个int型向量vector<int> v(n) //这是定义初始大小为n的向量vector<int> v(n,1) //这是定义初始大小为n,初始值为1的向量vector<vector<int> >v;//这样就嵌...

2020-03-24 07:05:37 331

原创 大整数运算--算法笔记

大整数的存储:用数组:整数的高位存在数组的高位 ,低位存在数组的低位。struct bign{ int d[1000]; int len; bign(){ memset(d,0,sizeof(d)); len=0; }};//为了方便获取大整数的长度,定义len变量来记录长度。输入大整数的时候,一般先用字符串读入...

2020-03-23 20:14:36 149

原创 1069 The Black Hole of Numbers (20分)

For any 4-digit integer except the ones with all the digits being the same, if we sort the digits in non-increasing order first, and then in non-decreasing order, a new number can be obtained by takin...

2020-03-23 15:51:35 174

原创 1093 Count PAT's (25分)

The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and the 6th characters, and the second one is formed by the 3rd, the 4th, and the 6th characters.Now ...

2020-03-23 12:31:02 81

原创 快速排序--算法笔记

快速排序:找主元A[0],定义一个临时变量temp,然后使用双指针,先从右指针开始比较,如果比temp(存着主元)大,right左移,如果比主元小,将A[right]写到A[left],然后left开始向右移进行比较,一直这样循环下去,一左一右,直到 left 与 right 相遇// 对区间进行[left,right]划分int Partition(int A[],int le...

2020-03-23 09:21:10 112

原创 归并排序--算法笔记

二路归并原理:将序列两两分组,将序列归并为n/2个组,组内单独排序。然后再将这些组两两归并,组内再单独排序。以此类推,直到只剩下一个组为止。递归实现:const int maxn = 100;//将数组A的[L1,R1]与[L2,R2]区间合并为有序区间(此处L2即为R1+1)void merge(int A[],int L1,int R1,int L2,int R2){ ...

2020-03-23 08:59:58 84

原创 贪心算法--算法笔记

贪心算法贪心算法:只考虑局部最优解从而使全局结果达到最优解的方法。即中间每步的策略都是最优解,从而使全局达到最有或较优的结果。PAT 1020 月饼 (25分)月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如...

2020-03-22 15:39:49 180

原创 散列--算法笔记

散列引例:N={8,3,7,6,2},M ={7,4,2},问这M个数中的每个数是否在N中出现过。M,N最直观的思路就是就是遍历,时间复杂度O(MN),当M和N都很大的时候,是无法承受的。解法:空间换时间,定义一个bool型数组hashTable[100010],其中hashTable[x]==true表示正整数x在N个正整数中出现过。这样就可以在一开始读入N个正整数的时候就进行预处理。...

2020-03-22 14:25:06 141

原创 选择排序--算法笔记

简单选择排序:令i从1到n进行枚举,进行n趟操作。[1,i-1]为有序区间,[i-1,n]为无序区间。 每次从无序区间找到最小的元素,与i元素进行交换,这样[1,i]就变成有序区间了,这样一点点加。算法实现:void seleteSort(){ for(int i = 0;i<n;i++){ int k = i; for(int j = ...

2020-03-22 10:51:54 103

原创 字符串处理--算法笔记

PAT 1009 说反话 (20分)给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样...

2020-03-21 16:57:05 126

原创 进制转换--算法笔记

进制转换步骤:将P进制转换为Q进制,需要分为两步将P进制数转化为十进制数 将十进制转化为Q进制//p进制x转化为10进制的yint y =0,product=1;while(x!=0){ y=y+(x%10)*product;//x%10为了取x的个位数 x=x/10; product=product*p;}//十进制y转化为Q进制zint z[40],num=0;/...

2020-03-21 15:31:03 218

原创 回文链表

请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?解答:/** * Definition for singly-linked list. * struct ListNode { *...

2020-03-21 00:23:16 75

原创 反转链表

反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?解答:/** * Definition for singly-linked list. * struct ListNode { *...

2020-03-21 00:21:42 309

原创 奇偶链表

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->...

2020-03-20 23:50:53 90

原创 移除链表元素

删除链表中等于给定值val的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5解答:/** * Definition for singly-linked list. * struct ListNode { * int val; * ...

2020-03-20 23:49:55 86

原创 删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解答:/** * Definition for sing...

2020-03-20 23:47:48 69

原创 图形输出--算法笔记

美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014 年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!输入格式:输入在一行中给出正方形边长 N(3≤N≤20)和组成正方形边的某种字符 C,间隔一个空格。输出格式:输出由给定字符 C 画出的正方形。但是注意到...

2020-03-20 22:56:08 204

原创 C:\Java\jdk9\bin\java -javaagent:C:\JetBrains\IntelliJ_IDEA\lib\idea_rt.jar=11805:

C:\Java\jdk9\bin\java -javaagent:C:\JetBrains\IntelliJ_IDEA\lib\idea_rt.jar=11805:C:\JetBrains\IntelliJ_IDEA\bin -Dfile.encoding=UTF-8 -classpath使用idea测试SCanner的时候报错的。这是找不到jre中的rt.jar包问题,也就是jdk没加载...

2020-03-20 22:37:21 3481

原创 响应消息常用状态码

状态码都是3位数字1XX:服务器接收客户端消息,但没有接收完成,等待一段时间后,发送1XX状态码。2XX:各种成功3XX:重定向。302重定向,304访问缓存4XX:客户端错误。404没有对应的资源,405没有响应的doXxx()方法。5XX:服务器端错误。500服务器内部出现异常。...

2020-03-20 22:36:07 420

原创 删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解答:/** * Definition for sing...

2020-03-15 22:41:16 96

原创 相交链表

编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的...

2020-03-15 22:40:19 48

原创 环形链表 II

给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node ind...

2020-03-15 22:38:25 75

原创 环形链表

给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], pos =...

2020-03-15 22:36:11 77

原创 习题9-4 查找书籍 (20分)

给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。输入格式:输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。输出格式:在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。输入样例:3Prog...

2020-03-11 22:07:44 19959 21

原创 习题9-5 通讯录排序 (20分)

输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。输入格式:输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串...

2020-03-11 22:06:10 302 1

原创 习题7-5 找鞍点 (20分)

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。本题要求编写程序,求一个给定的n阶方阵的鞍点。输入格式:输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。输出格式:输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。输入样例1...

2020-03-11 21:53:52 200

原创 习题7-7 字符串替换 (15分)

本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:原字母 对应字母 A Z B Y C X D W … … X C Y B Z A 输入格式:输入在一行中给出一个不超过80个字符、并以回车结束的字符串。输出格式:输出在一行中给出替换完成后的字符串。输入样例:Only ...

2020-03-11 21:47:04 861

原创 习题7-6 统计大写辅音字母 (15分)

英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。输入格式:输入在一行中给出一个不超过80个字符、并以回车结束的字符串。输出格式:输出在一行中给出字符串中大写辅音字母的个数。输入样例:HELLO World!输出样例:4解答:#include<stdio.h>#include&lt...

2020-03-11 21:45:55 577

空空如也

空空如也

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

TA关注的人

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