算法
文章平均质量分 56
weixin_37716758
这个作者很懒,什么都没留下…
展开
-
算法学习知识图谱
原创 2020-08-22 07:51:43 · 209 阅读 · 0 评论 -
剑指offer_面试4【替换空格】【字符串】
题目:请实现将一个函数,把字符串中的每个空格替换成"%20"。例如,输入"we are happy",则输出"we%20are%20happy"public class 字符串 { public String replaceString(String str) { if (str == null || str.equals("")) { return str; } char[] chars = str.toCharArr.原创 2020-08-07 00:17:31 · 80 阅读 · 0 评论 -
剑指offer-面试题3【二维数组中的查找】
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的顺序排序,请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否包含该正数。public class 数组{/** * * [ 1 2 3 ] * [ 2 9 18 ] * [ 3 10 21 ] * * @param arrays * @param num * @return */ public .原创 2020-08-06 00:09:38 · 83 阅读 · 0 评论 -
【数组、链表、跳表】Leetcode_26.删除排序数组中的重复项
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。解题思路:首先注意是有序数组用j记录当前数组不重复向前走的下标,当遇到不重复的数值,填进数组中。如果遇到长度为0或者1,直接返回,遍历一遍后,如果都是相同元素,则直接返回j+1,即1即可。class Solution { public int removeDuplicates(int[]..原创 2020-07-21 08:01:50 · 107 阅读 · 0 评论 -
排序算法之冒泡、插入、选择、归并、快排、桶排序、计数排序、基数排序
数组打印方式:Arrays.toString() 打印一维数组Arrays.deepToString()打印多维数组原创 2020-06-28 23:23:45 · 166 阅读 · 0 评论 -
递归
递归满足三个条件一个问题的解可以分为几个子问题的解这个问题与分解后的子问题,除了数据规模不同,求解思路完全一样存在递归终止条件注意:1.递归代码要警惕堆栈溢出,解决方式,通过变量限制递归深度,当超过该深度,停止递归并弹出异常。2.重复计算,解决方式:通过存储已经计算过的值,在计算前进行查询并取出。3.过多的函数调用,会耗时较多问题:当我们使用IDE进行单步跟踪进行调试时,如果遇到规模较大,递归层次很深的代码,该如何进行调试呢?答:1.打印日志发现,递归值。2.结合条件断点.原创 2020-06-25 18:57:38 · 98 阅读 · 0 评论 -
队列
手写扩容队列 public static class ArrayQueue { int n; int tail = 0; int head = 0; String[] queue; public ArrayQueue(int capacity) { this.n = capacity; queue = new String[capacity]; } public void enqueue(String s) { if (tail == n) { .原创 2020-06-22 00:28:26 · 78 阅读 · 0 评论 -
栈
手写自动扩容顺序栈 static class ArrayStack{ int count = -1; String[] array; int n; public ArrayStack(int n){ array = new String[n]; this.n = n; } public void push(String s) { count++; if (count == array.length) { String[] temp = n.原创 2020-06-22 00:04:45 · 78 阅读 · 0 评论 -
链表_数据结构
1.单链表反转2.链表中环的检测3.两个有序的链表的合并4.删除链表倒数第n个结点5.求链表的中间结点package example.com.Algorithm;import org.junit.Test;/** * ================================================ * 作 者:zhoujianan * 版 本:v1.0 * 创建日期:2020/5/27 * 描 述: * 修订历史: * =========.原创 2020-05-29 16:47:57 · 128 阅读 · 0 评论 -
基于AES的加解密
首先,步骤描述:加密:①随机生成32位的aseKey;②通过aseKey生成加密的cipher,这里初始化 ENCRYPT_MODE 解密刚好相反,初始化DECRYPT_MODE③通过加密cipher即可进行加密,Cipher.doFinal(content.getBytes(“UTF-8”))④加密完成解密:①解密出aseKey,这里,通过公钥加密aseKey,私钥解密aseKey,来获取最初的32位随机数的key,最终来用其进行加解密。②通过aseKey,初始化生成解密cipher,这原创 2020-05-29 13:54:35 · 484 阅读 · 0 评论 -
常用的排序算法回顾
public class 排序算法 { static int[] nums = { 3, 10, 28, 9, 5, 3, 9, 3, 1, 7, 5, 10, 35, 100 }; static int[] nums1 = { 3, 10, 28, 9, 5, 3, 9, 3, 1, 7, 5, 10, 35, 100 }; static int[] nums2 = { ...原创 2018-09-03 17:20:46 · 84 阅读 · 0 评论 -
用Java实现 通过两个栈实现一个队列
题目:用两个栈实现一个队列。队列的生命如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。package 数据结构;import java.util.Stack;/***题目:用两个栈实现一个队列。队列的生命如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头...原创 2018-08-29 16:47:15 · 819 阅读 · 0 评论