随笔分类 - # 算法
摘要:介绍 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。平均状况下,排序 n 个项目要 Ο(nlogn) 次比较,在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。 主要步骤: 1、从数列中挑出一个元素,称为 “基准
阅读全文
摘要:介绍 本篇介绍如何求2个整数的最大公约数,按《算法图解》中的思路也就是给你一块矩形土地,如何将其等分成面积最大的若干个方形? 欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。 代码实现
阅读全文
摘要:本文改编自:http://www.sohu.com/a/198681357_505794 假设有一个发送方在向接收方发送消息。如果没有任何加密算法,接收方发送的是一个明文消息:“我是小灰” 如果消息被中间人截获到,即使中间人无法篡改消息,也可以窥探到消息的内容,从而暴露了通信双方的私密。 因此我们不
阅读全文
摘要:AES加密算法入门:https://blog.csdn.net/IndexMan/article/details/87284833 第三方crypto.js下载地址:https://download.csdn.net/download/indexman/10957355 项目组对前端发送的关键请求参
阅读全文
摘要:给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = [1,2,2,1], nums2 = [2] 输出: [2] 说明: 输出结果中每个元素出现的次数,应与元素在两
阅读全文
摘要:我用双循环加标记位实现的,效率不高。大家凑活看。 package com.dylan.practice.leetcode; /** * 只出现一次的数字 * * 输入: [2,2,1] * 输出: 1 * * @author laoxu * @create 2018-10-17 **/ public
阅读全文
摘要:package com.dylan.practice.leetcode; /** * 买卖股票的最佳时机(找数组的高低谷) * 输入: [7,1,5,3,6,4] * 输出: 7 * 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利
阅读全文
摘要:题目来自leetcode: 方法:双指针法 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 复杂度分析 时间复杂度:O(n)O(n), 假设数组的长度是 nn,那么 ii 和 jj
阅读全文