算法
文章平均质量分 77
小小小小侯
不知归来是否为少年,此间少年当出发
展开
-
Leetcode 189.旋转数组
题目: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 进阶: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗? 示例1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4] 示例2:原创 2021-08-19 17:21:10 · 94 阅读 · 0 评论 -
LeetCode 278. 第一个错误的版本(二分查找)
二分查找又叫折半查找,是一种使用频率很高的查找算法,原理简单,容易上手。 算法如下: int BinSearch(int A[], int n, int k) { int l = 0, r = n - 1, mid; while (l <= r) { mid = (l + r) / 2; if (k == A[mid]) return mid; else if (k < A[mid]) r = mid - 1; else l = mid + 1; }原创 2021-08-17 22:31:54 · 141 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长子串
问题:给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 示例1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例3: 输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke"原创 2021-08-11 16:57:56 · 115 阅读 · 0 评论 -
KMP 字符串匹配算法
每日吐槽,KMP算法绝对是我见过最难的算法之一了,不知道是不是自己脑子不够用,还是咋滴,又或是最近太放飞自我了——学习1小时,玩手机一上午,我竟然看了整整两天才把这个算法看懂,嗷呜,不说了不说了,默默流下不争气的眼泪! 书看了好几遍,视频也听了好几个,然而我还是无法领会这神秘的KMP算法,没办法丫,我只好在那疯狂的看博客,看了一篇又一篇,最后,终于找到了一篇我能看懂的,没错,就是下面这篇博文,让我彻彻底底理解了KMP算法: 链接:https://www.cnblogs.com/yjiyjige/p/326原创 2021-08-09 10:36:40 · 112 阅读 · 0 评论 -
LeetCode 43. 字符串相乘(大数相乘)
在说大数相乘问题之前,我们先来看一下在算法竞赛中使用起来非常方便快捷的C++模板类vector 1. 不定长数组vector C语言在声明和定义一个数组时,必须要事先指定数组的长度,这就不利于数组中元素的动态增长,而C++引入了不定长数组vector,就能很好的解决这个问题,这也是vector受到广大acm竞赛选手青睐的原因所在。 vector是一个标准模板类,所以需要用vector A 或 vector B来声明一个vector,vector声明一个整数数组,而vector声明一个字符串数组。 vec原创 2021-07-30 22:35:02 · 540 阅读 · 0 评论 -
快速选择算法
第一章基础算法课 前言 学习思路:课上理解算法思想,课下记忆代码并上手题目,每道题目代码写上3到5遍,重复记忆。 Acwing在线题库:https://www.acwing.com/problem/ 1、快速排序 算法思想:分治策略 时间复杂度:0(nlogn) 算法步骤: 选择分界点x,三种选法,左边点q[l],中间点q[(l+r)/2],右边点q[r] 划分为两个区间,左边区间left所有数<=x,右边区间right所有数>=x 递归排序左区间left和右区间right 上代码: v原创 2021-07-23 09:23:28 · 281 阅读 · 0 评论 -
程序设计入门
Day 1 学习笔记 1、双精度浮点数的输入问题 使用 scanf 语句输入变量的值,如果是double类型的数,需要使用scanf("%lf",&a)。这真的是个坑,反正我每次都会掉进去。 #include<stdio.h> int main() { double a; scanf("%lf",&a); printf("%.1f",a); //输出结果取小数点后一位 return 0; } 2、转换思路 —— 解决问题,不要为了写原创 2020-07-29 21:09:47 · 279 阅读 · 0 评论