- 博客(32)
- 资源 (1)
- 收藏
- 关注
原创 算法学习记录——快速排序(Python的两种实现方法)
用来存储从数组中挑选出来的一个元素(这里选择数组第一个元素作为基准数)1 给定一组数据-->列表 data[...... ],分别标记数组的左边索引和右边的索引。基准数-->mark。
2023-11-14 10:01:29
272
原创 算法学习记录——冒泡排序(python实现)
简单实现冒泡排序:内循环每比较一轮,就确定一个元素是有序的,按外循环的次数,依次进行比较,像水中的泡泡一样,一个一个有序冒上来的过程。冒泡排序 --> 比较简单的一种排序算法。
2023-11-03 15:01:08
103
原创 算法实例练习——性格(内向外向人选座位)公交车问题(Python)
1. 一辆公交有 N 排座椅(有次序),一排座椅有两个座位,那一辆公交就有 2N 个座位。2. 有两类人上车,且坐满座位,所以会有 N 个内向的人,N 个外向的人:0->内向的人-->上车后找没人的,且座椅最小的位置坐下;1->外向的人-->上车后找有人的,且座椅最大的位置坐下;3. 输出结果,依据上车次序,给出每个人的座椅排号。
2023-11-02 16:26:50
138
原创 判断数组中只出现一次的两个数字
"""一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。请封装成一个函数,nums 为参数示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]限制:2 <= nums.length <= 10000"""def test(nums).
2021-03-20 15:58:09
192
原创 判断整数数组中,四个元素之和等于目标的问题
代码如下"""给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。请封装成一个函数,nums 和 target 为函数参数示例 1:输入:nums = [1,0,-1,0,-2,2], target = 0输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1
2021-03-20 15:53:06
328
原创 Python基础——练手小程序(模拟闹钟)
#设置一个响铃时间#获取到系统的当前时间#比较两个时间是否一样,一样的话电脑发出声音。import time as timport winsoundmytime = input('请输入一个响铃时间(时间格式:小时 分钟)注意空格:').split(' ')while True: currenttime = t.strftime('%H %M', t.localtime()).split(' ') if mytime[0] == currenttime[0] a.
2021-02-26 18:24:08
545
原创 Python基础——借用 for...in...迭代读取txt文件内容并保存成列表(List)
在做如何读取txt文件内容的练习时,遇到了一些问题,后经搜索、分析、学习,觉得有些收获,记录一下,也希望能够帮助到遇到同样问题的同学。两个问题:txt文件中有中文时,会报这个错误 UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 87: illegal multibyte sequence 解决方法很简单,在打开文件时加上编码属性即可 with open(dir, 'r',encoding = 'ut.
2021-02-22 16:39:23
1691
1
原创 算法实例练习——含有复制功能的可迭代栈Stack(JAVA实现)
问题:一个可迭代的 Stack用例,它含有一个静态的copy()方法,接受一个字符串的栈作为参数并返回该栈的一个副本。不多说,直接看代码实现。import java.util.Iterator;public class StackTest<T> implements Iterable<T>{ private Node head; private...
2020-03-08 14:17:58
409
1
原创 算法实例练习记录——后序表达式求值(JAVA实现)
因为只考虑加减乘除的运算,所以比较简单,没有特别复杂的逻辑,利用一个栈的出栈、入栈操作就可以了。下面是具体的代码实现import java.util.Stack;/* * 编写一段程序,对给定的后序表达式,求值并打印结果。 *//* * 此程序因为只考虑加减乘除的操作,所以比较简单,核心就是用栈Stack的入栈,出栈来实现。 * 注意一点就是,给定的后序表达式,需...
2020-03-08 12:56:14
508
1
原创 算法实例练习记录——中序表达式转后续表达式问题(JAVA实现)
问题描述:将算术表达式由中序表达式转为后序表达式(目前仅限加减乘除)题目的核心还是利用Stack栈的特点——后进先出,解决问题,注意出栈规则——按照算术运算的优先级。中序表达式:方便人读取的算术表达式,如:1+2-2/(3-8) ,类似这样的就是中序表达式了,其实就是我们日常中经常看到的算术表达式。后序表达式:方便计算机读取的算术表达式,如:12+238-/- ,这个后序表达式就...
2020-03-07 20:28:47
494
原创 算法实例练习记录——缺少左括号的括号补全中序表达式问题(JAVA实现)
算法练习记录——问题描述:编写一段程序,给定一个缺少左括号的表达式,并打印出,补全括号之后的中序表达式。 例如,给定输入:1 + 2 ) * 3 - 4 ) * 5 - 6 ) ) ) 你的程序应该输出:( ( 1 + 2 ) * ( ( 3 - 4 ) * ( 5 - 6 ) ) )自己的一些感悟:1、 题目本身可能没什么难度,重点在于如何思考出栈入栈的方式。一开始我考虑...
2020-03-06 15:05:19
776
原创 算法实例练习记录——括号匹配是否完整问题 [链表实现栈 + 栈的应用](JAVA实现)
括号匹配是否完整问题 [链表实现栈 + 栈的应用]本篇博文涉及两个内容: 用单向链表实现——栈的功能 用栈的特点实现——括号匹配(或者叫字符匹配) 第一个问题:单向链表实现——栈的功能(后进先出)为了实现栈的后进先出功能,选择链表的头节点(head)比较好操作,入栈和出栈操作如下:入栈---push(item):在链表头部head节点处,完成入栈。 出栈---p...
2020-03-05 10:59:27
233
原创 算法学习记录——简单的 A*寻路实现——>四个方向(JAVA实现)
A*寻路算法——一种寻找从起点A到终点B的有效路径的算法,游戏设计中的角色移动经常会采用这种算法来实现。说明:由于是初学者,对算法的理解还不够透彻,下面的分析过程,只考虑最简单的情况——平面四个方向(上,下,左,右)的搜索。下图中的 S 代表起点(start), E 代表终点(E),中间有填充色的区域为 障碍 ——不可穿过,需绕行。 ...
2020-03-01 15:02:37
2206
1
原创 算法学习记录——LRU(最近最少使用)算法的简单应用实现(JAVA实现)
LRU(最近最少使用)算法的简单应用实现——针对内存的使用情况,防止缓存的溢出问题。import java.util.HashMap;//LRU(最近最少使用)算法的简单应用实现——针对内存的使用情况,防止缓存的溢出问题。//数据结构为--->具有链表功能的哈希表(哈希链表),而且是双向链表。public class LRUCache { private Node he...
2020-02-29 14:05:10
327
原创 算法学习记录——Bitmap位图算法应用(JAVA实现)
Bitmap--->位图算法的应用——适用于大整数的--->去重和查找//Bitmap--->位图算法的应用——适用于大整数的——去重和查找public class TheBitmap { //用long长整形作为存储数据的二进制位,每个占用64bit位,即可以存储64个数据(0——63),也就是每一个words[]就可以表示64个整数。 //words[0]-...
2020-02-29 08:15:59
905
原创 算法学习记录——缺失的整数问题(JAVA实现)
问题的三种情况分析及代码实现——JAVA实现目录问题一:连续数组中找到缺失的那个整数问题问题二:一个连续数组中,其中n-1个正整数出现了偶数次,一个数出现了奇数次,请找出这个奇数次的正整数。问题三:一个连续数组中,其中n-2个正整数出现了偶数次,两个数出现了奇数次,请找出这两个奇数次的正整数。问题一:连续数组中找到缺失的那个整数问题简单思路——先求和,再减法。/...
2020-02-28 10:51:48
488
原创 算法学习记录——挖金矿求最佳收益问题(JAVA实现)
算法学习记录——挖金矿求最佳收益问题(JAVA实现)//挖金矿求最佳收益问题/* * 算法核心思想--->动态规划问题: * 1、确定最优子结构 * 2、确定全局最优解 * 3、确定最优子结构与全局最优解之间的关系 * 4、确定问题边界 *//* * 本题的具体解法分析: * 金矿数---> n(本题中用 g.length 表示) * 工人数---&g...
2020-02-27 16:36:05
589
原创 算法学习记录——大整数相加问题(JAVA实现)
算法学习记录——大整数相加问题(JAVA实现)//大整数相加的问题/* * 算法核心思想: * 用字符串存储大整数 * 将大整数字符串进行倒序后,再进行加法运算,运算按位进行。 * 将计算结果存入strresult[]结果数组中 * 将结果数组进行倒序,这时注意删除高位0 */public class BigDigitAdd { private static Stri...
2020-02-26 15:21:01
263
原创 算法学习记录——删去k个数字后的最小值(JAVA实现)
算法学习记录——删去k个数字后的最小值//问题:一个整数,删除K个数字后的最小值问题//用栈--这种逻辑存储方式解决问题//1、这个整数用字符串进行存储,方便操作——其实跟数组一样,只是为了操作上方便一些。//2、创建一个跟原整数位数一样多的字符数组stack——当作栈来使用,遵循后进先出原则。/*3、算法关键——栈顶的元素stack[top-1]跟整数(字符串nums[i])当前...
2020-02-23 15:01:32
353
1
原创 算法学习记录——寻找全排列的下一个数(JAVA实现)
在一个整数所包含的数字的全部组合中,找到那个大于且仅大于这个整数的那个整数。import java.util.Arrays;//问题:在一个整数所包含的数字的全部组合中,找到那个大于且仅大于这个整数的那个整数。/*分析: * 1、找到逆序区域的边界--->也就是从后向前查找数组得逆序区域(判断逆序区域的方法就是,a[i]>a[i-1]),找到后定位数字置换的边界inde...
2020-02-21 15:33:47
328
原创 算法学习记录——用栈实现队列(JAVA实现)
核心思想就是两个栈,协作实现队列的入队、出队操作详细的分析见代码块import java.util.Stack;//用栈实现队列--->核心思想就是两个栈,协作实现队列的入队、出队操作。public class StackToQueue { //声明两个栈,A作为入队使用,B作为出队使用。 private static Stack<Integer> ...
2020-02-21 11:27:46
179
原创 算法学习记录——无序数组中的最大相邻元素差值(JAVA实现)
利用堆排序原理,在不对原数组进行排序的情况,如何统计出相邻元素的最大差值。//无序数组中元素间的最大相邻差//借助桶排序,实现求一个数组中两个相邻元素的最大相邻差。public class MaxDistance { public static int getMaxSortedDistance(int[] array) { //获得当前无序数组的最大和最小值 int ma...
2020-02-20 16:31:15
807
1
原创 算法学习记录——二叉堆排序(JAVA实现)
对二叉堆(最大堆)进行排序操作——升序操作import java.util.Arrays;//堆排序(最大堆)实现//二叉堆实际是存储在一个数组中public class HeapSort { //“下沉”操作--->当前下沉是要创建一个最大堆,即父节点(小于子节点)下降,最大的元素(子节点)上升。 public static void downAdjust(int...
2020-02-20 15:03:10
175
原创 算法学习记录——二叉堆的创建(JAVA实现)
二叉堆(一个满足特定条件的完全二叉树)相关的内容,比较抽象。import java.util.Arrays;//二叉堆实际就是一个完全二叉树,即最后一个叶子节点前的所有节点都在。//二叉堆存储在数组中。/*二叉堆有两个类型: * 一个是最大堆——任何一个父节点都大于或者等于它左右孩子节点的值, * 一个是最小堆——任何一个父节点都小于或者等于它左右孩子节点的值。 */pu...
2020-02-20 14:21:39
159
原创 算法学习记录——快速排序(单边循环法)(JAVA实现)
算法学习记录——快速排序(单边循环法)(JAVA实现)import java.util.Arrays;public class QuickSortSingleSide { //递归调用快速排序算法 public static void quickSort(int[] array, int startIndex, int endIndex) { if(startIndex>...
2020-02-19 14:14:29
531
原创 算法学习记录——快速排序(双边循环法)(JAVA实现)
分治思想——递归实现快速排序算法( Java语言)import java.util.Arrays;//快速排序的递归实现public class QuickSort { //快速排序的递归实现----->双边循环的实现方法 public static int partition(int[] array , int startIndex , int endIndex)...
2020-02-19 10:56:58
505
原创 算法学习记录——判断一个数是否为2的整数次幂(JAVA实现)
//判断一个数是否为2的整数次幂//思路:利用了二进制的位运算。//2的整数次幂的数的特点为10,100,1000,10000等等。//2的整数次幂减1之后的二进制特点为1,11,111,1111等等。//所以这两个数的与运算(&)结果即为 0//即 n&(n-1)=0//时间复杂度为O(1)public class PowerOfTwo { pu...
2020-02-18 13:39:53
297
原创 算法学习记录——判断链表是否有环+求环的长度+求环的入口节点(JAVA实现)
算法学习记录——判断链表是否有环+求环的长度+求环的入口节点 判断链表是否有环 设计两个指针(p1每次移动一个节点,p2每次移动两个节点),即p1=p1.next p2=p2.next.next,如果在移动的过程中,p1和p2有相遇的情况,即p1=p2,就说明此链表有环。 求此链表环的长度 还是利用两个指针(p1每次移动一个节点,p2每次移动两个节点),让...
2020-02-18 11:05:29
364
原创 算法学习记录——求两个整数的最大公约数(java)
**算法学习笔记**//求两个整数的最大公约数public class GreatestCommonDivisor { //求最大公约数方法theGCD(a,b);利用递归调用 //结合了 辗转相除法 和 更相减损术 的各自的优势,同时利用了 移位 运算(a>>1-->a后移1位,即除以2 //// a<<1-->a前移1位,即乘以2...
2020-02-17 14:02:40
315
原创 算法学习记录——最小栈的实现(Java)
文章仅作为自己学习的一个记录,欢迎交流学习经验,共同学习!有不当之处请指正批评!下面的程序涉及到栈的基本操作,借助JAVA中的内置Stack实现,进入程序前,先就本实例中Stack的相关方法进行介绍:push(intelement):入栈操作,将element元素放入栈中。 pop():出栈操作,将当前栈顶元素取出(删除)并返回当前元素。 peek():获取当前栈顶元素,并返回当前元...
2020-02-17 10:35:30
166
原创 javaSE学习笔记——随机点名器
近来上课想做一个随机点名的小软件,刚刚写了一个,望大家指正。import java.io.*;import java.awt.*;import java.awt.event.*;import java.util.List;import java.util.ArrayList;public class DianName extends Frame{ privat
2012-11-11 22:06:39
777
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人