自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jeaten

Talk is cheap, show me your code.

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

原创 回文数判断 — Python实现

题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121 输出: falseLeetCode链接解题思路使用python解决非常简单首先将数组转为字符串两个指针,一个从左往右遍历字符串,一个从右往左遍历,如果遇到两个不相等的情况,则不为回文数,直到两个指针相等代码实现class Solution: def isPalindrome(self, x: int)

2020-09-30 17:13:16 3803

原创 反序数字 — Python实现

题目描述秘密电报由数字和空格组成,破解密电前需要获取完整的数字电报,将电报里的数字反序同时还需要去除掉多余的空格(子串之间只保留1个空格,其余均算作多余空格)如” 1 5721 23”需要反序成 "23 5721 1 ”输入描述带空格分隔的数字字符串输出描述去掉多余空格后的反序数字字符串样例输入3542 3 422 51272样例输出51272 422 3 3542解题思路将连续输入的字符保存在数组里,如果输入空格则不保存,当输入完成时

2020-09-24 23:51:02 3480

原创 战术遮挡 — Python实现

题目描述人的视力不能看到掩体之后的事物,在一场战争中,我们希望对方尽可能的低估我方的战斗力这样才能出其不意。某个军事参谋效仿孙膑,把某些小规模队隐藏在大规模部队中,这样,就使得军队数量看起来变少了。已知,如果某部队A的人数小于等于另一支部队B人数的1/3, 则可以将A藏于B中,且不被人发现。不支持嵌套,例如A小于B的三分之一,可将A藏于B, 如果又存在B是C的三分之一,不可再将B藏于C。现在已知我方共有n支部队,且知道每支部队的人数,请问,在最优方案下,我们暴露给敌人的部队数量有几支。输入描述输

2020-09-24 23:35:07 618

原创 快速排序算法 — C++实现

#include <iostream>using namespace std;void swap(int *arr,int low,int high){ int tmp; tmp=arr[low]; arr[low]=arr[high]; arr[high]=tmp;}int partition(int *arr,int low,int high){ int piv; piv=arr[low]; while(low<high)

2020-09-24 15:26:53 345

原创 连续子数组的最大和 — C++实现

题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)牛客网题目链接解题思路1代码实现class Solut

2020-09-23 14:48:47 818

原创 数据流中的中位数 — C++实现

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解题思路代码实现...

2020-09-22 19:09:51 470

原创 最小的k个数 — C++实现

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。牛客网题目链接解题思路代码实现

2020-09-22 15:49:00 815

原创 数组中出现次数超过一半的数字 — C++实现

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。牛客网题目链接解题思路数组中有一个数字出现的次数超过数组长度的一半,意味着这个数出现的次数比其他数字出现的次数的总和还要多,为解决这个问题,我们需要保存两个值:数组中的一个数字、该数字出现的次数,操作为:我们遍历到下一个数字的时候,如果下一个数字和我们之前保存的数字相同,则次数+1

2020-09-22 08:57:37 931

原创 字符串的排列 — C++实现

题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。牛客网题目链接解题思路代码实现using namespace std;class Solution {public: vector<string> Permutation(string str) {

2020-09-21 23:17:17 726

原创 两个有序数组的公共部分 — Python实现

题目描述输入两个有序整型数组,输出两个数组的公共部分,公共部分要求为有序数组,实现最快算法。示例输入:[-5,0,6,8,9,10],[0,8,9,11,15]输出:[0, 8, 9]解题思路题目要求我们中出两个有序数组的公共元素,我们可以直接从两个数组中开始遍历,由于数组有序,只要数组中的元素不相等,则继续往后遍历,若相等则输出。代码实现def handle(arrayA,arrayB): res=[] i=0 j=0 while(i<ar

2020-09-21 23:05:50 1062

原创 插入排序算法 — C++实现

插入排序将一个记录插入到已经排好序的有序表中,得到一个新的、记录数增加1的有序表排序图示算法评价代码实现

2020-09-16 23:51:44 208

原创 选择排序算法 — C++实现

选择排序每次从待排序的元素中选出最小(或最大)的一个元素,然后将该数据放在序列的起始位位置。然后在剩下的未排序元素中重复这一过程,所有的数据都被排序。排序图示算法评价就时间复杂度而言,和冒泡排序相同,都为O(n2)O(n^2)O(n2),但性能上要优于冒泡排序代码实现源代码:#include <iostream>using namespace std;void selectionsort(int *arr,int len){ int i,j,tmp,loc_min;

2020-09-16 21:34:24 342

原创 冒泡排序算法 — C++实现

冒泡排序两两比较相邻记录的关键字,如果不符合顺序要求则交换,直到没有不符合顺序要求的为止。排序示意图代码实现源代码:#include <iostream>using namespace std;void bublesort(int *arr,int len){ int i,j,tmp; for(i=0;i<len;i++){ for(j=0;j<len-1;j++){ if(arr[j]>arr[j+1]){

2020-09-16 21:06:54 4610 1

原创 排序算法总结

本文主要讲解常见排序算法,文章目录排序排序算法的稳定性内排序和外排序内排序外排序冒泡排序选择排序插入排序希尔排序堆排序归并排序快速排序排序排序算法的稳定性在一组数中,如果存在两个数据相等,在排序完成后相等的两个数的相对位置不变, 则我们称该排序算法是稳定的。内排序和外排序内排序在排序的整个过程中,待排序的所有记录全部放置在内存中主要包括插入排序、交换排序、选择排序和归并排序外排序由于数据过多,排序过程需要借助外存的排序冒泡排序两两比较相邻记录的关键字,如果不符合顺序要求则交换,直到没

2020-09-16 21:01:57 138

原创 C语言指针

C语言指针C语言中指针具有非常重要的位置,在学习数据结构之前,我们必须得掌握指针的用法。在我们写代码的时候,程序中的每个变量都会存在内存的某个地址单元中,我们可以通过“&”符号来实现取地址操作:#include <stdio.h>void main(){ int a=0; printf("变量a的地址: %p\n",&a);}运行结果为:可以看到我们获得了整型变量a的地址,这与我们本节要讲的指针的关系如下:指针是一个变量,用来存储另一个变量的地

2020-09-12 14:29:30 135

原创 序列化二叉树 — C++实现

题目描述请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。例如,我们可以把一个只有根节点为1的二叉树序列化为"1,",然后通过自己

2020-09-11 22:15:58 345

原创 二叉搜索树与双向链表的几种解法 — C++实现

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路代码实现

2020-09-09 10:33:43 200

原创 按规律输出矩阵 — python实现

题目描述已知矩形的行和列,请按如下的规律输出斜对角矩形。例1:输入:2 2输出:[[1,3],[2,4]]例2:输入:1 2输出:[[1,2]]例3:输入:4 3输出:[[1,3, 6], [2, 5, 9], [4, 8, 11], [7, 10, 12]]解题思路题目的意思是想让我们从左下角往右上角的方向放置数据,因此我们需要先找到这些数据的坐标,然后再将这些数据放进这些位置即可,第一个数和最后一个数分别放进第一个和最后一个格子里。这些格子的坐标分别为(0,0),(1,0

2020-09-08 22:30:01 1263

原创 复杂链表的复制的几种解法 — C+++实现

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解题思路代码实现...

2020-09-08 11:08:04 365

原创 二叉树中和为某一值的路径 — C++实现

题目描述输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。牛客网题目链接解题思路首先,只有遍历到叶子结点的路径才称之路径。因此,如果不是叶子结点就要一直遍历到叶子结点才能判断。为此,我们应将之前遍历到的路径和路径的和保存起来,当遍历到的结点为叶子结点且和为预期值的时候将整条路径输出。如果为叶子结点和与预期值不一样,则应将叶子结点在路径中删除,然后回退继续查找,直到所有路径都被遍历为止。代码

2020-09-07 11:25:08 287

原创 二叉搜索树的后序遍历序列 — C++实现

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。牛客网题目链接解题思路代码实现...

2020-09-07 10:21:50 355

原创 按之字顺序打印二叉树 — C++实现

题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。牛客网题目链接解题思路可参考分行从上到下打印二叉树,可以隔行将顺序的结果逆序就行。或者一行用栈,另一行用队列来轮着存储。代码实现/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x)

2020-09-04 22:58:22 193

原创 分行从上到下打印二叉树 — C++实现

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。牛客网题目链接解题思路与从上到下打印二叉树一样,都是先存在队列里,然后从队列里取出。只不过这里要区分每一层,因此我们在需要记住每一层有多少个元素,然后在每一层元素数量达到后切换下一层。代码实现class Solution {public: vector<vector<int> > Print(TreeNode* pRoot) { vector <vector <

2020-09-04 17:18:23 255

原创 从上往下打印二叉树 — C++实现

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。牛客网题目链接解题思路此题属于队列的应用,具体解题过程为:遇到根节点,先输出如果其有左右子结点,则将左右子结点存在队列中(置于队尾)再从队列中按序取出结点,并进行相同的操作,直至队列为空位置代码实现class Solution {public: vector<int> PrintFromTopToBottom(TreeNode* root) { vector <int>res

2020-09-04 15:08:09 260

原创 栈的压入、弹出序列 — C++实现

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路代码实现...

2020-09-04 14:34:34 433

原创 包含min函数的栈 — C++实现

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。牛客网题目链接解题思路构造一个和栈容量一致缓存栈,用于存储存储当前栈的最小值,具体操作过程为:入栈时数据直接入栈,缓存栈则入当前的最小值出栈时数据栈和缓存栈都出栈代码实现使用栈的版本class Solution {public: void push(int value) { data.push(value); if(cahe.empty

2020-09-04 09:58:11 221

原创 顺时针打印矩阵 — C++实现

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.牛客网题目链接解题思路代码实现...

2020-09-04 09:12:43 336

原创 对称的二叉树 — C++实现

题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。牛客网题目链接解题思路对称二叉树,即左右两边的数是对称的,因此我们可以从左右两边同时开始判断,如果遇到左边和右边不相等的情况,则不相等;一直到遍历结束,都没有不相等情况,则相等。即:左子树和右子树相等,右子树和左子树相等。代码实现/*struct TreeNode { int val; struct TreeNode *left; struct Tre

2020-09-02 21:56:52 444

原创 二叉树的镜像 — C++实现

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。源二叉树和镜像二叉树的结构示意如下: 源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5解题思路代码实现...

2020-09-02 21:09:17 462 1

原创 树的子结构 — C++实现

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)牛客网题目链接解题思路对于两颗树A和B,要判断B是否为A的子树,则其首先应满足根节点相同,然后再去比较;如果根节点不同,再用A的左子树与B相比,不满足条件的话再用A的右子树与B相比,还不满足则B不在A中。对于具体的比较,首先比较根节点,再比较左子树和右子树,当都能够满足的条件的话我们便可以认为B在A中。因此,我们可以使用递归的代码来实现。代码实现/*struct TreeNode { in

2020-09-02 17:16:47 268

原创 合并两个排序的链表 — C++实现

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。牛客网题目链接求解思路给出两个链表,我们需要先比较两个结点的头结点,将小的结点保存,然后将这个结点后面的链表与另一个链表继续比较,进行同样的处理 — 典型的递归。同时需要注意:如果有其中一个链表为空,则返回另一链表代码实现class Solution {public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {

2020-09-02 14:31:36 199

原创 反转链表的几种解法 — C++实现

题目描述输入一个链表,反转链表后,输出新链表的表头。牛客网题目链接解题思路1使用额外空间,然后采用头插法将遍历到的结点插入到新建立链表的头部,将原链表的尾结点作为新链表的头结点即可,这种方法消耗的存储空间较大,新建了一个和原来链表一样大小的链表,不推荐。代码实现/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solutio

2020-09-02 11:45:44 446

原创 链表中环的入口结点 — C++实现

题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。牛客网题目链接解题思路代码实现

2020-09-01 10:45:34 305

空空如也

空空如也

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

TA关注的人

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