算法
文章平均质量分 60
忧郁的叮当猫
路虽远,行则将至;书虽难,学则必成。
展开
-
八大排序算法的代码实现以及时间复杂度和稳定性
稳定性也就是说一个序列中的相同值,它排序后,它的相同值的顺序不会改变即稳定冒泡(稳定)冒泡原理遵循大数下沉小数冒泡,思路是每次相邻两个进行交换,因为是每次找到当前最小数然后进行一格一格的移动,因为是一格一格的一道,相同的数字并不会出现后一个数字跳两格的情况跳到前面,只可能是两个数一起前移或者后移,所以该排序是稳定的选择(不稳定)选择原理和冒泡差不多,但是它省去了相邻交换的这个步骤,直接找到最小的位置,直接换过来,这个的交换移动位置就是跳跃式的,也可能出现两个数,前一个被换到后面去原创 2021-10-08 17:47:06 · 919 阅读 · 0 评论 -
红黑树详解
查找算法有哪些?暴力:遍历for二分:能做二分查找的条件:有序哈希:最高效O(1),hash冲突,JDK1.8里面HashMap:数组+链表+红黑树(处理Hash冲突的)插值:索引:bfs&dfs:平衡树:B+树:B-Tree:红黑树:高效的查找算法数据结构二叉搜索树:也叫二叉查找树,也叫二叉排序树特点:右边的节点比左边的节点大,右子树节点大于根节点,左子树的节点小于根节点二叉树二叉查找树:时间复杂度就是我们树的深度时间复杂度分析:logn=> 2^x=n(原创 2021-05-19 16:05:06 · 938 阅读 · 0 评论 -
给你一个只包含数字的字符串,输出这个字符串的整数值
例如String s="123456";输出 123456解法:可以把s转换为array数组,倒序遍历,int a=c-'0';sum+=sum+a*10;最后返回sum问题升级:不让使用字符加减转换int,也不让强转,也不让使用工具类,这道题该怎么解?大题思路还是一样,不过int a=c&15;这样写效率更高,&(有1才是1);整数字符也就是0~9,一个整数字符&15可以得到他本身的整型;...原创 2021-10-19 17:07:24 · 655 阅读 · 0 评论 -
秋招算法笔试题汇总
题一:你需要编写一个程序来模拟目录的操作,一开始,你在根目录"\",一共有两种命令:● cd s: s为一个目录名,表示从当前工作目录的路径进入名为s的目录。特别地,"cd .."(即s=="..")表示返回上一级目录,若当前已为根目录,则无视该次操作。数据保证若s不为"..",则一定为小写字母组成的长度不超过10的字符串。● pwd: 表示查看当前工作目录的路径,你需要输出这个路径。输入描述第一个行是一个整数n,表示一共会有n个操作。接下来每行是一条命令,命令的种类为问题描述中的二原创 2021-09-24 16:40:42 · 651 阅读 · 0 评论 -
输入一个表示整数的字符串,把该字符串转换成整数
思路:从左至右扫描字符串中的每个字符,把之前扫描得到的数字乘以10,再加上当前字符表示的数字。注意要点:(1)最好判断一下输入是否为空。(2)如果字符串的第一个字符是‘-’号,最终得到的整数必为负整数。(3)输入的字符串中不能含有不是数字的字符。(4)输入的字符串不能太长,否则转换成整数后会导致整数溢出。package com.sf; import java.util.Scanner; public class StringToInt { public st.转载 2021-09-18 21:47:26 · 1995 阅读 · 0 评论 -
LRU算法详解
概念理解1.LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的,是根据页面调入内存后的使用情况进行决策了。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU算法就是将最近最久未使用的页面予以淘汰。2.操作系统课程里有学过,在内存不够的场景下,淘汰旧内容的策略。LRU … Least Recent Used,淘汰掉最不经常使用的。可以稍微多补充两句,因为计算机体系结构中,最大的最可靠的存储是硬盘,它转载 2021-09-18 21:34:22 · 15145 阅读 · 0 评论 -
力扣刷题第一天
1.只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?代码class Solution { public int singleNumber(int[] nums) { /* 异或, a^0=a a^a=0 a^b^c=a^c^b 交换律.原创 2021-08-05 11:55:28 · 857 阅读 · 0 评论