![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法问题
囿于之间
这个作者很懒,什么都没留下…
展开
-
力扣553题之最优除法
题目给定一组正整数,相邻的整数之间将会进行浮点除法操作。例如, [2,3,4] -> 2 / 3 / 4 。但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。你需要找出怎么添加括号,才能得到最大的结果,并且返回相应的字符串格式的表达式。你的表达式不应该含有冗余的括号。示例输入: [1000,100,10,2]输出: “1000/(100/10/2)”解释:1000/(...原创 2019-12-21 14:49:56 · 181 阅读 · 0 评论 -
桶排序
粗谈桶排序刚刚看了云栖大会的文章,我大概说说什么是桶排序。(博客图片均来自云栖大会)桶排序其实就是把一组需要排序的数分成一组一组的,这样的每一组数都放在一个个划分好范围的区间里,这样的区间我们称为一个个桶。每一个桶(bucket)代表一个区间范围,里面可以承载一个或多个元素。桶排序的第一步,就是创建这些桶,确定每一个桶的区间范围:具体建立多少个桶,如何确定桶的区间范围,有很多不同的方式。...原创 2019-12-16 20:04:06 · 94 阅读 · 0 评论 -
二叉树的建立(二叉链表)和遍历及求二叉树的深度
二叉树的建立和遍历及求二叉树的深度首先就说一说二叉树的建立(二叉链表)我们需要一个先建立一个结构体来做为其结点的数据结构,其数据域用来存放结点的数值,俩个指针域分别存放其左孩子和右孩子。接下来是建立方式,我们使用先序扩展序列来建立,后台输入为一串字符,字符满足要建二叉树的先序序列,其中孩子为空的地方我们用#来表示,代码如下:BiTree CreateBiTree(){ BiTree bt...原创 2019-11-24 18:25:47 · 3070 阅读 · 0 评论 -
力扣232题 用栈实现队列
原题:使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop()...原创 2019-09-15 20:40:54 · 233 阅读 · 0 评论 -
找两个数组的交集
找两个数组的交集原题是:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [9,4]说明:输出结果中的每个元素一定是唯一的我们可以不考虑输出结果的顺序。解题步骤:先定义三个数组(a[],b[...原创 2019-05-27 17:29:47 · 689 阅读 · 0 评论 -
递归之爬台阶问题
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?这个问题明显是一个递归问题,而且结果是一串斐波那契数列。每次上台阶时只有两种方式(设置为递归的返回值),递归最重要的就是递归出口,本题的出口就是到n=1或n=2时开始回溯。代码如下:#include <stdio.h>#include <stdlib.h&...原创 2019-05-24 23:45:01 · 675 阅读 · 0 评论 -
删除链表倒数第n个节点
删除链表倒数第n个节点本题的主要思路就是创建好一个链表,然后定义两个指针,先让第一个指针开始走n-1步,然后两个指针同时走,同时遍历链表,这时当第一个指针走到链表末尾的时候,第二个指针刚好走到目标节点(可以自己模拟一下),进行删除操作即可,当然定义一个指针也可以,但是时间复杂度会变高。解题代码如下#include<stdio.h>#include<malloc.h>...原创 2019-05-24 23:00:12 · 82 阅读 · 0 评论 -
排序算法之快速排序法
用c语言实现快速排序法快速排序法感觉听名字它的排序速度就特别快,但是它可并不是最快的排序方法,所有的排序方法的速度都是相对的,没有绝对的最快,如果对于比较杂乱的一组数,快排是一种很好的选择。好了,先讲一讲快排的思想。现在假如你有一组数需要排序,例如下面这组数:6 1 2 7 9 3 4 5 10 8首先我们可以找一个基准数,一般选取最左边,就是6(现在知...原创 2019-03-11 20:22:01 · 137 阅读 · 1 评论 -
深度优先搜索之走迷宫问题
本题也是在啊哈磊的《啊哈算法》中看到的,自己也总结了一点,这本书作者遍历数组时候,数组的下标在书里都是从1开始的。该迷宫问题的大概要求就是现在键盘上输入一个矩阵做迷宫地图,用0表示空地可走,1表示有障碍物,现在由你自己在键盘上输入一个入口坐标,一个目标坐标,,每执行上下左右则路径长度加一,然后用程序计算出从入口到目标坐标的最短路径。代码如下:#include<stdio.h>i...原创 2019-03-10 16:06:48 · 807 阅读 · 0 评论 -
c语言使用栈的思想判断一串括号配对是否正确
原题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。这道题我最之前使用两层循环做的,后来想想其实直接可以用数组写一个简单栈来对括号进行配对。首先对输入的字符串长度进行奇偶判断,若是遇到奇数,则直接pass掉。然后开始对字符串遍历,凡是遇到左括号都让它入栈,到遇到右括号时,让它和栈顶的左括号配对,若配对失败则该字符串无效,大概思路就是这样,直接供上...原创 2019-03-09 20:25:42 · 905 阅读 · 0 评论 -
用深度优先搜索输出全排列
马上就要蓝桥杯,算法好多都不会,最近在读啊哈磊的《啊哈算法》,这本书挺通俗易懂,尤其对于我这种比较菜的人哈哈。下面就谈一谈用dfs思想解决全排列问题,所谓dfs就是深度优先搜索(Depth First Search)。下面先给出一个dfs的基本函数模型。void dfs(int step){ 判断边界 尝试每一种可能 for(i=1;i<=n;i++) { 继续下一步dfs(...原创 2019-03-09 15:42:06 · 613 阅读 · 0 评论 -
一道很巧妙的入门算法题
下面是算法原题(来自蓝桥杯)我对本题的一些理解,方法特别简单,希望大家可以用到。本题要求是输入一个三个数,w,m,n。w代表每一层有几个房子,m和n分别代表房子号,应题要求房子号是按s型排列的,也就是说奇数楼层排列正常,偶数楼层逆序排列,要求输出的是两个房子号之间的最短距离。如果本题房子都是按顺序排列,那么最后求两个房子之间的距离只需要拿两个房子层数差加它们相对每层的序号差就可获得最终答案,...原创 2019-03-08 18:15:00 · 388 阅读 · 0 评论 -
c语言使用递归思想解决扩散问题实例
下面图片是算法原题下面是我对本题的见解本题要求起始输入一个奇数N,以N*N的形式再输入一个矩阵,矩阵最中间的数字要求为1,以1为中心的九宫格内如果有1则连成一片,如此扩散,最后要求程序输出连成一片的1的个数。首先根据题意,必须建立一个大规模的二维数组,再用双重for循环遍历键盘输入数字,如何从中间开始扩散,不妨定义两个整型变量p、q来确定矩阵的最中心位置,然后从中间开始扩散,这里我们可以在主...原创 2019-03-08 18:01:58 · 778 阅读 · 0 评论