
数据结构与算法
Final磊
这个作者很懒,什么都没留下…
展开
-
每日一题:最大连续1的个数 III
还没有学会自己去解题,只能学着照猫画虎,一个debug一个debug去理解代码含义 public int longestOnes(int[] nums, int k) { int left=0,right; int len=nums.length; int res = 0; //结果 int ks = 0; //统计零的个数 for(right=0;right<len;right++){ .原创 2022-03-30 10:42:50 · 157 阅读 · 0 评论 -
华为机试中等难度题目
进制转换 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String str = sc.nextLine(); String num = str.substring(2,str.l原创 2021-09-12 23:23:24 · 1444 阅读 · 0 评论 -
插入排序法实现及理解
插入排序法 插入排序,一般也称为直接插入排序,对于少量的排序,他是一个有效的算法,插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排序好的有序表中,从而一个新的记录数增1的有序列表。在实现过程中使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。 实现思路 从数组第二个数据开始往前比较,即一开始用第二个数和他前面的一个比较,如果符合条件,则让他们交换位置 然后用第二和第三个比较,符合则交换,否则继续比较 重复步骤二,直到数组原创 2020-11-08 09:49:10 · 162 阅读 · 0 评论 -
链表原理及实现理解
链表 链表是有序的列表。 链表是以节点的方式来存储,链式存储 每个节点包含data域,next域,指向下一个节点 链表的各个节点不一定是连续的存储 链表分带头节点的节点和没有带头结点的链表 应用实例代码实现(108好汉,无序、有序) /** * */ package com.stone.dataStructures; /** * @author Final * */ public class singleLinkedList { /** * @param args */ pu原创 2020-11-05 08:36:06 · 789 阅读 · 2 评论 -
队列理解及代码实现(数组)
队列是一个有序列表,可以使用数组和链表实现 遵循先入先出的原则 数组模拟队列 队列本身是有序列表,使用数组的结构来存储队列的数组,则队列数组的声明如下图,其中maxSize是该队列的最大容量 因为队列的输出输入分别从前后端来处理,因此需要两个变量front及rear分别记录队列前后端的下标,front会随着数据输出而改变,而rear会随着数据输入而改变 数组模拟队列的思路 将尾指针进行rear+1 必须判断是否为空队列 rear==front 若尾指针小于maxSize,就将数据存入rear所指的数原创 2020-10-28 17:37:34 · 162 阅读 · 0 评论 -
稀疏数组理解及代码实现
稀疏数组 当一个数组中大多数元素为0和同一个值的元素,可以使用稀疏数组保存该数组。 稀疏数组的处理方法 记录数组一共有几行几列,有多少个不同的值 把记录不同值的元素的行列及值记录在一个小规模的数组中 一般都是n行*3列的动态数组 第一行存放数组的大小以及多少个值。 例(11,11,5),原始数组有11行,11列,5个值 例 原始二维数组转稀疏数组的思路 遍历原始的二维数组,得到有效数据的个数sum 根据sum就可以创建稀疏数组sparseArr int[sum+1][3] 将二维数组的有效数据原创 2020-10-27 23:23:01 · 146 阅读 · 0 评论