算法
序冢--磊
这个作者很懒,什么都没留下…
展开
-
算法基础知识回顾--排序概览
一、数据结构回顾数据的逻辑结构可以分为线性结构、非线性结构线性结构又可以分为:线性表、栈、队列、广义表、字符串、数组非线性结构:数和图数据存储结构:顺序存储和链式存储数据的运算方法:增删改查排序二、排序概述二分排序必须要有顺序排序方法的分类按存储介质:内部排序、外部排序比较器个数:并行排序和串行排序主要操作:比较排序和基数排序辅助空间:原地排序和非原地排序稳定性:稳定排序和非稳定排序自然性:自然排序和非自然排原创 2021-10-19 00:23:00 · 178 阅读 · 0 评论 -
优先队列学习
#include <stdio.h>#include <stdlib.h>#include <iostream>typedef struct key_value_struct KeyValue;struct key_value_struct { int _key; void *value; void (*freevalue)(void *);};#define PRIORITY_MAX 1#define PRIORIT.原创 2021-10-03 09:20:49 · 124 阅读 · 0 评论 -
合并表记录
描述数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。输入描述:先输入键值对的个数然后输入成对的index和value值,以空格隔开输出描述:输出合并后的键值对(多行)#include <map>#include <iostream>using namespace std;int main(){ int number; std::map<原创 2021-06-10 17:42:47 · 91 阅读 · 0 评论 -
字符串分隔
描述•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。输入描述:连续输入字符串(输入多次,每个字符串长度小于100)输出描述:输出到长度为8的新字符串数组示例1输入:abc123456789复制输出:abc000001234567890000000复制...原创 2021-06-10 13:48:07 · 284 阅读 · 0 评论 -
明明的随机数
描述明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据(用于不同的调查),希望大家能正确处理)。注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。当没有新的输入时,说明输入结束。.原创 2021-06-10 13:03:16 · 119 阅读 · 0 评论 -
计算某字母出现次数
描述写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数。不区分大小写,字符串长度小于500。输入描述:第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字母。输出描述:输出输入字符串中含有该字符的个数。...原创 2021-06-10 10:03:37 · 141 阅读 · 0 评论 -
字符串最后一个单词的长度
校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。描述计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。输入描述:输入一行,代表要计算的字符串,非空,长度小于5000。输出描述:输出一个整数,表示输入字符串最后一个单词的长度。...原创 2021-06-10 09:45:53 · 121 阅读 · 0 评论 -
立库刷题小节(14,125,141)
立库刷题小节(14,125,141)没有那么多时间自己做了,直接看代码分析下为什么别人要这么做,然后自己写一遍吧。时间宝贵没时间自己做了。14题最长公共前缀原题编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。来源:力扣(LeetCode)原创 2021-02-28 11:11:34 · 229 阅读 · 0 评论 -
合并两个有序链表
leetcode 合并两个有序链表今天跟同事一起刷了这个leetcode第二十一题,没有做出来题目为:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4可能是被题目的图误导了https://assets.leetcode.com/uploads/2020/10/03/merge_ex1.jpg思路是用l2为节点去解答这个题目,所以采用了错误的解法/*原创 2021-02-17 15:28:50 · 141 阅读 · 0 评论 -
删除数组中的重复选项----快慢指针的使用学习
删除数组中的重复选项leetcode 上遇到了一个题目,要求删除数组中的重复选项原题:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums原创 2021-02-12 20:26:20 · 134 阅读 · 0 评论 -
leetcode的二分算法的复习小题
原题你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。示例:给定原创 2021-02-11 23:06:15 · 115 阅读 · 0 评论 -
反转链表
反转链表今天和同事在leetcode上刷了一道比较经典的反转链表的题目,这个题之前刷过,但是又有点忘记了,在这里再次复盘一下反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL这个题的第一个知识点就是递归程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它原创 2021-02-09 11:40:14 · 84 阅读 · 1 评论 -
插入排序学习(三) 折半排序
#include<stdio.h>#include <strings.h>#define MAXSIZE 20typedef struct{ int arr[MAXSIZE]; int length;}tree;void initTree(tree* T){ bzero(T,sizeof(tree)); T->l...原创 2020-02-10 18:36:46 · 188 阅读 · 0 评论 -
排序学习(二)--------插入排序
1.普通的插入排序插入排序找插入位置直接插入的种类:顺序法找插入位置(直接插入)二分插入排序缩小增量,多遍插入排序----希尔排序顺序插入是在插入的时候就已经排好顺序了,存储的数组都是有顺序的不会是无序的下面我们看一下插入排序我写了一个简单的代码思路就是插入一个元素后将其余所有的元素后移#include<stdio.h>#define ...原创 2020-02-09 18:44:28 · 206 阅读 · 0 评论 -
排序学习笔记(一)
排序什么是排序?排序:将一组杂乱无章的数据按照一定规律有顺序的排列起来。即,无序序列排成一个个有序序列(由小到大或者由大到小的运算)排序方法分类:安存储介质分类:内部排序和外部排序按比较个数排序:串行排序 并行排序按主要操作:比较排序(插入排序)、交换排序、选择排序和归并排序和基数排序按辅助空间:原地排序(O(1)) 和 非原地排序按自然性:自然排序(有序会快...原创 2020-02-09 14:02:10 · 224 阅读 · 0 评论 -
折半插入
#include<stdio.h>/** * 折半插入排序算法 2018.07.22 */int main(){ int array[10] = {10,1,3,2,75,1000,379,0,-1,10}; //插入排序算法下标从一开始 int i; for(i=1;i<10;i++) { int sta...原创 2020-01-28 14:25:22 · 187 阅读 · 0 评论 -
排序方法之插入排序
排序方法之插入排序插入排序的思想重点是如果插入在中间 那么需要将元素后移,插入的时候就排好顺序#include <stdio.h>#include <signal.h>#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <si...原创 2020-01-27 19:51:23 · 152 阅读 · 0 评论 -
队列
#include <stdio.h>#include <stdlib.h>//leetcode 分式化简struct QueueRecord;typedef int ElementType;struct QueueRecord{ int Capacity;//容积 int Front; int Rear; int ...原创 2019-11-08 14:00:02 · 117 阅读 · 0 评论 -
欧几里得算法 以及幂函数
欧几里得算法较小的那个数 和 两个数相除的余数的最大公约数质数是只能 被1和他自身整除叫做素数 也叫质数 <?php /** * Created by PhpStorm. * User: root * Date: 19-10-2 * Time: 下午9:43 */ function GCD($m,$n)...原创 2019-10-14 09:06:46 · 119 阅读 · 0 评论 -
运行时间中的对数
运行时间中的对数分析算法混乱的地方大概集中在对数上,某些分支算法是以O(NlogN)时间来运行的,除了分值算法以外,还包括其他的算法,可将对书中最长出现的规律概括为以下法则,如果一个算法用常熟时间(O(1))将问题的大小削减为其中一部分(通常是1/2),那么这个算法就是O(logN)算法的时候,通常假设数据是提前读入1)对分查找对分查找:给定一个整数X和证书A(0),A(1),.....原创 2019-10-11 13:28:19 · 292 阅读 · 0 评论 -
按顺序获取第k个值
两种算法都不算好,但是在一定情况下,第二种明显由于第一种从一个数组中获取到第k个大小的值<?php//设一个题目确定其中第k个最大者,我们称它为选择问题//第四个最大值$arr = [3,4,5,1,2,4,6,1,32,4,6,7,1,3,4,5,6,676,756,8,5,856,7,56,7,56,756,7,56,756,7,56,756,7,567,5...原创 2019-09-03 20:43:33 · 261 阅读 · 0 评论