- 博客(42)
- 资源 (1)
- 收藏
- 关注
原创 python 实现BFS(广度优先搜索),DFS(深度优先搜索)
BFS思路:利用队列实现创建一个空队列,加入首节点的拓展新建一个空列表,用于后边的判重如果没用重复,然后比对,符合返回,不符合加到队列尾部遍历完所有队列数据,如果没有符合的,返回Falsefrom collections import dequedef search(name):#广度优先搜索(BFS) #deque()函数创建一个双端队列(先进先出) #注意d...
2019-08-09 17:21:22 3188
原创 python实现快排,选择排序
选择排序#O(n**2)#找到列表元素的最小值,以及索引值def findSmallest(arr): smallest = arr[0] smallest_index = 0 for i in range (1,len(arr)): if smallest > arr[i]: smallest = arr[i] ...
2019-08-08 21:23:58 200
原创 王道_线性表_顺序表习题
#include<stdio.h>#include<stdlbib.h>#define MaxSize 20typedef strict{ int data[MaxSize]; int length;}SqList;//第一题,删除最小的元素,并返回,空出位置由最后一个元素补上int DeleteMin(SqList &L,int &e){ int temp=L.data[L.length-1]; for(int i=0;i<L.len
2021-07-25 19:49:18 178
原创 Leetcode11.呈水最多的容器
题目链接思路采用双指针,暴力一遍就可以了codeclass Solution {public: int maxArea(vector<int>& height) { int l = 0, r = height.size() - 1; int ans = 0; while(l < r) { int area = min(height[l], height[r]) * (r -
2021-01-29 15:45:05 115
原创 剑指offer——二维数组中的查找
二维数组中的查找二维数组中的查找思路暴力求解,遍历m行n列所有元素,一致返回 true,否则返回 falseC++实现方法一class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { if(matrix.size()==0) return false; int ro
2020-12-06 16:02:45 75
原创 剑指offer——数组中重复的数字
数组中重复的数字数组中重复的数字思路可以排序后,遍历,如果第 i 个和第 i+1 个一致,则返回,否则一致遍历至结束返回 -1使用哈希表记录数组中的各个数字,如果表中已有,直接返回,否则直至全部遍历完成后返回-1由于题目的特殊性,每个索引因该对应多个的唯一索引值,所以我们通过一次遍历,我们可以将:已在该位置上的无需变动,即nums[i] = i;如果索引 nums[i] 和 索引 i 处元素值都为 nums[i],则重复返回即可否则交换索引 i 和 nums[i] 元素值,将此数字交
2020-12-04 21:26:12 65
原创 HUD 2000~2022
2000#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;#define ll long long;const int MANX = 1e5;int main(void){ char a,b,c; while(scanf("%c%c%c",&a,&am
2020-09-28 20:52:42 712
原创 Codeforces Global Round 10(补题)
A_Omkar and Password题意:将一个数组中任意不相等的数相加,问进行一系列相加后最后剩下几个数思路如果数组中的每一个元素都相等那么结果为n否则结果就是1代码#include<bits/stdc++.h>using namespace std;#define ll long longconst int MAXN = 1e6;int a[MAXN];int main(void){ int t; cin>>t; while(t--)
2020-08-20 22:11:40 109
原创 补题_Codeforces Round #663 (Div. 2)
A_A. Suborrays题目意思:输出一个good permutation,也就是说数组中的元素从第一位到最后一位进行按位或运算结果大于元素个数思路:按顺序输出代码#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<cmath>#include<vector>using namespace std;c
2020-08-12 23:50:39 139
原创 NC14773_完全平方数
题目链接思路首先打表,将[1,1000000000]中31622个完全平方数打表找到起始位置和结束位置,然后同0比大小,输出大的代码#include<bits/stdc++.h>using namespace std;const int MAXN = 3e5+2000;#define ll long longint a[MAXN];int main(void){ int n; cin>>n; for(int i=0;i<MAXN;++i.
2020-08-11 23:52:27 116
原创 快慢指针_用来判断是否存在环路、环的节点、环的长度等
是否存在环路可以想做是两个人在环形跑道上,跑的快的迟早会将跑的慢的套圈(这是存在环路)即fast=fast->next->next,slow=slow->next,如果最终fast=slow则存在环路例题:环路节点当我们确定有环路时,另fast=head此时令fast = fast->next;slow = slow->next;两个相遇时就是环路入口code/** * Definition for singly-linked list. * st
2020-07-29 00:06:58 268
原创 ENCU_箱子打包
题目意思需要将一些物品打包装箱,一个箱子最多装两个物品(可以一个也可以两个)求将这些物品全部打包,最少要多少个箱子题解思路首先将箱子从小到大排序,尝试在一个箱子里装此刻剩余的最大的和最小的两个物品如果能装下,箱子数+1否则的话,只将最大的物品装到箱子中代码#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<cma.
2020-07-24 16:21:56 821
原创 HDU-1009.FatMouse‘Trade
题意这是需要用M磅猫粮去和猫兑换仓库中的JavaBean,每个仓库中的JavaBean数量和价格不完全一致,如何才能兑换到更多的JavaBean这里有一句大致意思是:不要买完仓库中的全部思路这是一个简答贪心问题,我只需要每次购买当前剩余产品中性价比最高的产品即可如果能全换完,那就换完,否则兑换等比例JavaBean代码#include<iostream>#include<algorithm>#include<cstdio>#include&l.
2020-07-24 10:46:01 181
原创 Codeforces Round #658 (Div. 2)——B.Sequential Nim
首先读完题目的第一感受是这是一个博弈论的题目,有点想法其。但是考虑到这个比赛难度,他不会出太难的,所以就进行了尝试思路这个就是简单的博弈主动权掌握在第一个碰到大于1的数的人手中,它可以通过全拿走或者剩余1个来控制剩下的节奏,从而获得比赛胜利#include<bits/stdc++.h>using namespace std;#define ll long long int main(void){ int t; cin>>t; ll int a[100000.
2020-07-22 15:12:29 122
原创 Codeforces Round #655 (Div. 2)——B. Omkar and Last Class of Math
题目链接大概意思是:将输入的数n分解为a+b,但要求LCM(a,b)最小题解思路n%2==0 即n为偶数则a=b=n/2,此时LCM(a,b)=n/2取得最小n%2!=0 即n为奇数且非质数这个则需要找到n的最大公约数(通过 n/最小公约数 )a=n/最小公约数,b=n-最大公约数,LCM(a,b)=b如果为质数a =1,b=n-1,LCM(a,b)=b#include<bits/stdc++.h>using namespace std;i
2020-07-13 11:45:55 113
原创 【剑指offer】数值的整数次方
题解思路:1、直接暴力求值2、快速幂(附上大佬博客,仅供参考)目的:速幂的目的就是做到快速求幂举个例子:2^9 其中9是可以拆分的9 = 2^3 + 2^0 ; 9的二进制为1001所以2^9 = 2^1 * 2^( 2^3)我们将原来需要9次的运算简化到了2思路: 据二进制的权值来求解的。那么在关于位运算的部分,我们可以逐位获取b的位,碰到0,就累乘...
2019-12-15 14:06:51 132
原创 【剑指offer】二进制中1的个数
这个题的思路是比较简单的大家先想一下,一个十进制整数是如何转化为二进制数的???我们采用的是“除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。所以这个思路就是:和2%,看是否为1,为1,结果加1,否...
2019-12-14 21:21:18 79
原创 【剑指offer】矩形覆盖
解题思路:类似于上一道的找规律题;灵活应用递归和迭代n的值为一种有sum种方法1122334558递归迭代讲一下递归和迭代的区别和各自的利弊方法定义优点缺点递归程序调用自身的编程技巧称为递归1)大问题化为小问题,可以极大的减少代码量2)用有限的语句来定义对象的无限集合;3)代码更简洁清晰,可...
2019-12-13 21:39:54 93
原创 【剑指offer】变态跳台阶
题解思路:这个题我愿意将这题叫做找规律,但是题干上提示的贪心,所以我需要思考一下找规律上第i级台阶一共有sum种方法11223448516我们不难发现,第一级就是1种之后就是sum(n) = sum(n-1),就是前一级的二倍针对第一个思路的代码优化,加入位运算Java1、找规律,暴力public class...
2019-12-12 12:45:05 98
原创 交换两个整形变量a,b的值
思路:引入中间变量tmp使用异或运算不借助零时变量Java1、引入终间变量tmppublic static void swap( int a,int b ) { System.out.println("交换前:"+a+","+b); int tmp = a; a = b; b = tmp; System.out.println("交换后:"+a+","+b);}2...
2019-12-11 11:34:54 931
原创 【剑指offer】跳台阶
解题思路这个题类似于斐波纳契数列那道题,有所区别的是他们的输入数n的范围是不同暴力递归无法通过打表来优化时间复杂度,所以我们只能用迭代思想优化dp[i]=dp[i-1]+dp[i-2];当然我们只需要保存前两个数就可以,节省空间Java1、暴力public class Solution { public int JumpFloor(int target){ ...
2019-12-11 11:05:59 71
原创 【剑指offer】斐波那契数列
题解思路暴力,简单的递归优化递归算法_1由于我们一直输入的n<=39,所以我们可以打个表将前40项的结果存在数组中,减少方法1中的重复计算优化递归算法_2虽然方法2的计算次数减少了,但是我们多开辟了39个空间,造成浪费我们支开辟每次参与运算的两个数的空间,减少空间浪费Java1、暴力public class Solution { public i...
2019-12-10 23:44:22 85
原创 【剑指offer】旋转数组的最小数字
解题思路:暴力求出最小值用语言的自带函数进行(从小到大)排序,输出第一个元素看到大佬提到了二分查找,但是我好像没太搞明白。附上大佬博客Java1、暴力import java.util.ArrayList;public class Solution { public int minNumberInRotateArray(int [] array) { int n...
2019-12-09 15:26:54 113
原创 【剑指offer】替换空格
解题思路:利用语言的自带函数用一个新数组存储,遇到" “就追加”%20"。否则遇到啥就写啥Java1、调用自带函数public class Solution { public String replaceSpace(StringBuffer str) { return str.toString().replace(" ","%20"); }}2、用新...
2019-12-08 13:21:33 95
原创 【剑指 offer】二维数组中的查找
这个题的解题思路,我个人就想到了两种暴力从左下找我们不难发现,左下的元素(m)是这一行的最小值,这一列的最大值m < target 这m已经是这一行的最大值,所以我们需要右移一位m = target 直接返回 truem > target 这m已经是这一列最小的元素,所以我们需要向上移一行Java1、暴力public class Solution { ...
2019-12-07 16:35:50 88
原创 尝试在Linux下写java代码
准备工作首先就jdk的安装我本来是计划从官网下载的,但是网速实在不给力,所以我选择了百度网盘中下载这就有了第一个问题:百度网盘的下载安装百度网盘是为数不多的支持LInux的网盘了百度网盘官网在官网下载deb文件,然后#解压到当前文件夹 tar zxvf jdk-8u172-linux-x64.tar.gz /opt/jvm #然后将文件移动到/usr/local/下,注意这里是需...
2019-12-04 19:33:16 1663
原创 重新入坑Linux系統
为什么说是重新入坑呢?Linux反反复复接触了不下5次吧!但是没有一次是超过一个月的,第一次接触应该是去年的9月份,但是那会我的还是个小白,用C语言写hello world都写不明白,装这个系统更多是一个摆设吧!然后就不咋用了,这也就有了我第二次入坑,因为第一次使用的是ubuntu,界面不是太友好相比较Windows来说,所以第二次选择了界面相对友好的Deepin,但是还是没有坚持使用多久。然后确...
2019-12-03 20:17:01 116
原创 2020-12-09
写在最前边,我这个人性子比较直接,有事说事,不喜欢拐弯抹角的。有些话对事不对。面试既是你选择我们的过程,同时也是我们选择你的过程。互相尊重一下自己的选择,既让选择了,别轻易放弃。我不轻易承诺别人什么,但是我可以肯定的是,只要你们能坚持下去,一定不会差的。还有这个组大部分是男人!!!希望当初面试时有些话你们一直记得并且坚持下去。不要忘记自己的初心,面对问题的时候想一下自己的初心。我们给你们一个机会何...
2019-11-22 21:33:28 112
转载 pycharm下打包成exe程序
使用到的工具:pycharm在所需要打包的的程序中调用 ——Terminal终端输入 pip install pyinstaller安装成功后,输入命令pyinstaller --console --onefile +文件名最后在工程目录的dist文件下,就可找到打包好的exe程序...
2019-10-16 20:21:01 313
原创 python画叮当猫和大雄、皮卡丘
写在前边,在下非美术专业,追求神似就可以了皮卡丘import turtledef getPosition(x, y): turtle.setx(x) turtle.sety(y) print(x, y)class Pikachu: def __init__(self): self.t = turtle.Turt...
2019-10-15 21:26:48 2697 1
原创 CodeForce #592(div2)A~C
A题——Pens and Pencils这个题写的是比较快的,但是问题是在下的英文实在是不咋样,所以我读题本身就慢好多。但是努力学习就好了。这个题目当时看完给我感觉就是暴力,注意一点就是eg:三场讲座一根pen刚好,但是四场就不够了,但是第二根pen用不完,我们这里是进一不四舍五入。我们需要2个pen。#include<bits/stdc++.h>using namespa...
2019-10-15 17:03:40 140
原创 交换两个变量 a、b
交换两个变量 a b首先想到的方法就是,引入第三个变量tmp;#include<stdio.h>int main(){ int a,b,tmp; scanf("%d,%d",&a,&b); tmp=a; a=b; b=tmp; printf("%d %d",a,b); return 0;}当然还有其他的方法,如果只想使用两个变量呢?方法1:...
2019-09-28 15:48:38 215
原创 HDU 2084 数塔DP
题目链接解题思路:从最顶层或者最底层出发,推到最底层或者最顶层,然后找出其中那条路线的值最大我才用的是从下往上,代码如下#include <stdio.h>#include <string.h>int main(){ int d[103]; int a[103][103]; int c, n, i, j; /*c是测试用例个数...
2019-09-16 22:15:03 143
原创 冒泡排序及优化——python实现
一句话说,冒泡排序,就是 两两比较然后最大的后移,最终形成一个有序的数列,从整个流程看就像泡泡往上冒,所以叫做冒泡排序def bubble_sort(array): if len(array)<2: return array else: n = len(array) for i in range(0,n-1): ...
2019-09-04 19:34:47 171
原创 python实现Dijkstra(狄克斯特拉算法)——解决边权为正的加权图的最短路径问题
狄克斯特拉算法思路:找到未被处理的节点获取距离起点最近的节点,更新其邻居的开销如果有邻居的开销被更新,那么同时更新其父节点将其标记为已经处理过,然后继续处理那些未被处理过的节点#BFS查找两点之间的最短路径,解决的“段数”最少#Dijkstra 狄克斯特拉算法解决的是总权重最小的路径,一般解决加权图中的最短路径问题#这个算法只适用于有向无环图,而且只能用于边权为正的图,不能用...
2019-08-10 11:49:29 1258
原创 牛客网刷题——部分逻辑类、数学类面试题整理总结
这个思维导图是我大概一周前整理的吧,那会的我不知道怎么想的,突然想尝试做一些面试题,但是实在是目前实力有限,就看一些思维类的内容吧,也就当给平时的生活找点乐子我附上细节图吧,这样看起来能方便点最后有两道题逻辑题是今天早上才看的,觉得比较好吧1.晚上有四个人过桥,一次只能过两个人,但是只有一只手电,四个人过桥的时间分别是1,2,5,8,求最短过桥时间思路:原则上是让用是最短的人过去再...
2019-08-06 15:05:01 1454
原创 牛客网刷题——二进制中1的个数(涉及进制转换,和计算机原码、补码转换)
明确几个知识点十进制转换为二进制(以及十进制转八进制,十六进制等等,虽然这个题目不涉及)计算机的符号数的三种表示方法原码反码补码 正数的补码与原码相同补码的运算:模加负数等于负数的补码符号位不变,数值位按位取反符号位不变数值位按位取反末位再加1原码反码补码进制转化以下所有内容都是使用python语言描述//强大的内置函数hex() #十进制转换为十六...
2019-08-05 20:56:09 238
原创 第一次在Linux中编程
本篇文章只是个人理解首先,给大家推荐一个我在使用的东西感觉还不错吧Sublime Text3 用于代码,标记和散文的复杂文本编辑器,它就是一个 文本编译器所以不要将这个当做某类语言的编译器。至于如何用这个写C语言,还有python或者C++之类的我给大家分别准备了几个blog,希望对大家有所帮助吧。编译C语言的blogSublime Text3 编译C和C++编译python编写p...
2019-03-12 21:34:11 166
原创 所有有关文件的,基本上都在这里了
文件管理个人觉得这个是必须掌握的哦,没有为什么,因为这个和之前的命令一样是基础首先我们因该明确一点,Linux没有“盘符”的概念,也就是说不存在我们常用的C盘,D盘之类的。所以在Linux下,所建立的文件常被挂在到一个目录下,用户通过操作目录来实现磁盘读写。Linux系统的主要目录及其内容:目录内容/bin最常用的命令,构建最小系统所需要的命令/boot内核...
2019-01-31 22:26:13 196
计算机网络概述(自己整理笔记)
2020-12-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人