数据结构
Ethan Wilson
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 30. 包含 min 函数的栈 C++ 时间91%
用一个记录当前最小值的栈mins作为辅助,如果新入栈的数小于等于(因为可能有重复数值,所以取等号)mins.top或者mins是空的,则两个栈一起入栈。随后出栈时如果出的是当前最小值,则两个栈一起出栈。class MinStack {public: stack<int> s, mins;public: /** initialize your data structure here. */ MinStack() { } void push(int x) { s.pu原创 2021-12-26 10:25:12 · 363 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列 C++ 时间99.87%
栈s1只进,栈s2只出。入队时统一加入到s1,此时出栈顺序刚好跟出队顺序是反的。出队时将s1的所有元素以此加入s2,此时s2的出栈顺序即为出队顺序,在s2里Pop即可。需要注意的是,只需要在s2为空时再搬运s1即可class CQueue { stack<int> s1, s2;public: CQueue() { } void appendTail(int value) { s1.push(value); } int deleteHead() { //原创 2021-12-26 09:44:58 · 386 阅读 · 0 评论 -
二叉树 中序遍历非递归 同时输出层号 栈的应用
伪代码int MidSq(Bintree *t){ if (t == NULL) // 空树时直接退出程序 return 0; InitStack(stack); // 初始化栈 Bintree *p = t; // p指向头节点 int layer = -1; // 记录层号 while (p!=NULL || stack->top!=-1) { // 只要P不是空 就一直往左探测 /原创 2021-11-14 00:00:00 · 68 阅读 · 0 评论 -
PAT Counting Leaves C++ 44行
https://pintia.cn/problem-sets/994805342720868352/problems/994805521431773184思路可用层序遍历 用leafcnt数组 根据层号记录叶子数AC代码#include <iostream>#include <vector>#include <queue>using namespace std;struct { int layer; vector<int> child;}原创 2020-07-28 12:32:14 · 120 阅读 · 0 评论 -
PAT Lowest Price in Supply Chain 测试点3.7. C++ 38行
https://pintia.cn/problem-sets/994805342720868352/problems/994805362341822464思路深度遍历 遇到叶子结点就判断价格是否比当前最低价格低就行了测试点3、7:最低价格lowprice的初始数字设置的小了其他:float改成doubleAC代码#include <iostream>#include <vector>#include <queue>#include <cmath&原创 2020-07-28 12:25:08 · 129 阅读 · 0 评论 -
PAT The Largest Generation C++ 43行
https://pintia.cn/problem-sets/994805342720868352/problems/994805372601090048思路静态数即可 可用层序遍历 初始化一个laycnt数组记录每层的结点数 每访问一个结点 就++laycnt[当前层]AC代码#include <iostream>#include <vector>#include <queue>using namespace std;struct NODE { int原创 2020-07-26 12:45:00 · 111 阅读 · 0 评论 -
PAT Highest Price in Supply Chain C++ 39行
https://pintia.cn/problem-sets/994805342720868352/problems/994805376476626944思路其实就是求叶子结点的最大深度 用深度优先即可 可用静态树 孩子用动态数组AC代码#include <iostream>#include <vector>#include <queue>using namespace std;struct NODE { double price; vector<原创 2020-07-26 12:16:08 · 88 阅读 · 0 评论 -
PAT Total Sales of Supply Chain 测试点2356 C++ 2种方案 34/42行
https://pintia.cn/problem-sets/994805342720868352/problems/994805388447170560思路只有到了叶子结点处才计算售价,深度或广度遍历都可以。深度遍历可以用当前层号计算价格,也可以用当前层价格计算;广度就是层序遍历测试点2356:float改用doubleAC代码含深度和广度两种方案#include <iostream>#include <vector>#include <queue>原创 2020-07-21 12:56:18 · 629 阅读 · 0 评论 -
PAT-结绳 C 17行
给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连。每次串连后,原来两段绳子的长度就会减半。给定 N 段绳子的长度,你需要找出它们能串成的绳子的最大长度。输入格式:每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 N (2≤N≤104 );第 2 行给...原创 2020-02-08 13:54:26 · 181 阅读 · 0 评论 -
2021王道数据结构 习题2.2 代码题 比答案简洁的解法
//8void exchange(int *a,int m,int n){ int b[m+n]; int i,j; for(i=m,j=0; i<m+n; i++,j++) //后n个数存到b b[j]=a[i]; for(i=0; i<m; i++,j++) //前m个数存到b b[j]=a[i]; for(i=0; i<m+n; i++) //复...原创 2020-01-29 21:09:39 · 754 阅读 · 0 评论 -
数据结构 练习2-找出链表倒数第四个结点的数
思路:ppre和pcur一开始都指向头,pcur随后后移4个,然后ppre和pcur一起前进,当pcur指向NULL时,ppre指向的便为倒数第四个结点。void search(pstu head){ pstu ppre,pcur; ppre=pcur=head; pcur=pcur->next->next->next->next; while(pcur) ...原创 2019-11-20 20:12:24 · 112 阅读 · 0 评论 -
数据结构 练习1-合并有序链表
#include <stdio.h>#include <stdlib.h>typedef struct student{ int num; struct student *next;}stu,*pstu;pstu list_sort(pstu *head,pstu *tail,int i){ pstu pnew=(pstu)calloc(1,sizeof(s...原创 2019-11-20 19:31:31 · 98 阅读 · 0 评论