![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
一些算法思路及实现的记录
憋废话_开码
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 66. 构建乘积数组
自己想的办法超时了,下面是大神题解 public int[] constructArr(int[] a) { if(a == null || a.length == 0) return new int[0]; int len = a.length; int[] resLeft = new int[len]; int[] b = new int[len]; resLeft[0] = 1;//左边无元素,设原创 2022-05-27 18:15:33 · 58 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
自己的方案(超时) 1.数组快排 2.逐一检查 问题:超时问题严重,用了递归,空间代价太大 大神题解 利用HashSet存储的无序不可重复数据的特性轻松解决。 为什么自己没有想到? 答:集合好久没复习了,忘了set接口的特性 首先贴出解决方案 class Solution { public int findRepeatNumber(int[] nums) { HashSet hashSet = new HashSet<>(); for (int i = 0原创 2022-05-25 21:26:30 · 70 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
题解原创 2022-05-24 11:00:06 · 70 阅读 · 0 评论 -
KMP算法拙见
kmp算法理解原创 2022-04-08 21:09:01 · 73 阅读 · 1 评论 -
分鱼问题、三旗问题
三旗问题、分鱼问题原创 2022-04-08 21:05:22 · 181 阅读 · 0 评论 -
一元稀疏多项式
算法——一元稀疏多项式原创 2022-04-08 21:03:55 · 422 阅读 · 0 评论 -
数组、矩阵、广义表习题
数组、矩阵、广义表习题原创 2021-05-12 21:44:03 · 105 阅读 · 0 评论 -
线性表练习题
线性表练习题原创 2021-04-24 20:38:59 · 311 阅读 · 0 评论 -
关于图的重中之重的必会算法(很基础)
关于图的重中之重的必会算法(很基础)原创 2021-03-26 21:39:05 · 68 阅读 · 0 评论 -
大数相乘。。。。
1.自守数 一个数的平方的尾数等于这个数的数是自守数 法一 //知识点:若要分离一个数的最后x位,只需要用次数对10^x取余即可,注意这里的最后x位指的是它表示的实际数值,不是仅仅一个数,例如我想求345的最后2位数,我用345 % 100得到的是45,而不是4,想要得到4需要这么做345 % 100 - 345 % (100 / 10), 这就是自守数算法中的重要步骤,当然取4也可以用(345 % 100) / 10得到,这种方法我用在求水仙花数的一类题上 #include<stdio.h>原创 2021-05-26 15:54:17 · 96 阅读 · 0 评论 -
常见动态规划
常见的动态规划问题 ...原创 2021-05-16 17:19:19 · 60 阅读 · 0 评论 -
统计文件单词数问题大汇总
统计文件单词数问题大汇总原创 2021-05-13 18:59:43 · 245 阅读 · 0 评论 -
比较高频的几个递归问题
比较高频的递归问题原创 2021-05-10 18:29:54 · 124 阅读 · 0 评论 -
用编程解决一些入门的数学问题
一些数学问题原创 2021-05-02 20:29:27 · 962 阅读 · 0 评论 -
简单算法练习题
算法练习题原创 2021-05-01 15:49:57 · 164 阅读 · 0 评论 -
一些花里胡哨的数的编程问题
一些花里胡哨的数的编程问题原创 2021-04-26 20:30:20 · 285 阅读 · 0 评论 -
彻底搞懂八皇后
八皇后问题解释原创 2021-04-04 12:00:45 · 91 阅读 · 1 评论 -
输出几个数的全排列(110)
前言 今天算是被这道题折磨了好久,我发现用递归解决的题目在别人把答案给你过后你看完真的会赞不绝口:我靠,真妙啊!!!,但是可能几小时,可能几天,让你再写一遍可能就会傻眼,还是不知道怎么去写,所以对于每一道算法题我都希望逐步追踪它的执行过程,以便留下更深的影响。 思想概述 假如有5个数,首先确定第1个位置上有几种可选择情况,显然是5种,然后确定第2个位置上有几种情况,由于1位置已确定,则还剩4种情况,以此类推,最后一个位置只有当前这种情况,具体实现及解释看下文,首先贴上代码 #include<stdio原创 2021-04-03 16:07:55 · 164 阅读 · 1 评论 -
子孙数的数目(108)
#include<stdio.h> int main() { int n = 0; printf("请输入一个数:\n"); scanf("%d", &n); int fun(int); printf("此数的子孙数有%d个\n",fun(n)); return 0; } int best(int n)//返回最高位的值 { while (n / 10 != 0) { n = n / 10; } return n; } int fun(int n) { int原创 2021-04-03 08:44:01 · 230 阅读 · 0 评论 -
从n个数中抽取r个数有多少种组合(109)
问题: 假设有n个数,这里假设为5个数,a[5]={1,2,3,4,5},从中抽取3个数有多少种情况?(3个数不能完全重复) 思路:肯定要用一个数组a存储这n个数,其次需要一个数组b存储选出的这个数每一位的值对应于a数组的下标是多少,因此b数组大小肯定为r,首先这5个数存储在下标0~4上,对待这种问题我们应该从特殊到一般去想,假设第一个选取的组合数字为5(下标为4),那么我在选第二个组合数字时选取的范围是不是变成了a数组下标0~3中了,第二个选取的组合数字为4(下标为3),同样,我选取第三个组合数字时选取范原创 2021-04-02 19:34:56 · 1136 阅读 · 0 评论 -
三旗问题(92)
算法思想:题目要求对给定的一组旗子序列按蓝白红顺序排序,序列中蓝白红分别用B、W、R表示,首先肯定需要一个字符数组存储用户给定序列,其次需要三个"指针"用于遍历序列过程中的交换操作,具体设定b、w、r指针,开始时让b和w指针指向首元素,我们用w来遍历,b指针等到需要交换时才移动,r指向末元素,这样指向的目的在于题目要求的输出序列为蓝白黄,自然指向蓝的指针只有当w指针指向蓝时才会b与w指针交换,白作为中间元素,当用w遍历时如果是白则自动++,以此来保证中间的全是白,b的左边包括b全是蓝,当w为红是自然与r交换原创 2021-03-28 11:45:23 · 117 阅读 · 0 评论 -
求两字符串最大公共子串长度问题(104)
方法一(暴力法):利用三层循环进行逐个筛选,具体思想如下,从子串1的第i个字符开始,如果它与子串2的第j个字符相同,则证明从此位置开始公共子串开始出现,则同时加1判断后一个字符是否相同(这里隐含的将这个可能成为最大子串的起始位置保存了下来,也就是i),若后一个出现不相同了,则证明公共子串已结束,然后更新最大公共串长和最大串长的起始位置,若一开始就不相同则证明以子串1第i个位置为起始位置,子串2第j个位置开始不会出现公共子串,那么就判断子串2的下一个位置,看看他是否会和子串1的i位置出现公共子串。 还可以这.原创 2021-03-27 11:01:09 · 296 阅读 · 3 评论