自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 Fisher判别法的MATLAB程序

多元统计回归分析function [COEFF,DIST,CLASS] = dclass(X1,X2,X)% dclass作为两个模式类的距离判别分析% 语法[COFEE,DIST,CLASS]=dclass(X1,X2,X)% x1,x2——分别为类1、类2的训练样本“样品×变量”矩阵% x——为待判样品的“样品×变量”矩阵% COEFF——判别函数的系数向量% CLASS——待判样品的分类[N1,~]=size(X1);[N2,~]=size(X2

2020-11-18 13:47:30 6116 7

原创 Fisher最优分割算法(附带MATLAB程序与java程序)

function [LP,J]=lp(X)% LP对有序样品向量X进行最优分割% 语法 LP=lp(X)% X─从小到大排列的有序数据向量% LP─分类损失函数值% J─最优分割点n=length(X);D=zeros(n,n);LP=zeros(n,n-1);J=zeros(n,n-1);for i=1:n-1 for j=2:n if(i<j) sx=0; d=0; fo

2020-11-11 15:41:40 4296 4

原创 二叉搜索树中的众数(题目来自LeetCode)

给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当前结点的值 左子树和右子树都是二叉搜索树 例如: 给定BST [1,null,2,2],返回[2].提示:如果众数超过1个,不需考虑输出顺序进阶:你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)思路一:普通的中序遍历 int preVal = 0, curTim.

2020-09-24 01:27:15 192

原创 监控二叉树(题目来自LeetCode)

给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。示例 1:输入:[0,0,null,0,0] 输出:1 解释:如图所示,一台摄像头足以监控所有节点。 示例 2:输入:[0,0,null,0,null,0,null,null,0] 输出:2 解释:需要至少两个摄像头来监视树的所有节点。上图显示了摄像头放置的有效位置之一。提示:给定树的节点数的范围是 [1, 1000]。 每个节点的值都.

2020-09-22 14:41:46 193

原创 无重复字符的最长子串(题目来自LeetCode)

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2:输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3:输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。解题思路:.

2020-09-22 00:22:22 80

原创 三维形体的表面积(题目来自LeetCode)

在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。示例 1:输入:[[2]] 输出:10示例 2:输入:[[1,2],[3,4]] 输出:34示例 3:输入:[[1,0],[0,2]] 输出:16示例 4:输入:[[1,1,1],[1,0,1],[1,1,1]] 输出:32示例 5:输入:[[2,2,2],[2,1,2],[2,2,2]] 输出

2020-09-21 15:20:01 133

原创 重复的子字符串(题目来自LeetCode)

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: “abab”输出: True解释: 可由子字符串 “ab” 重复两次构成。 示例 2:输入: “aba”输出: False 示例 3:输入: “abcabcabcabc”输出: True解释: 可由子字符串 “abc” 重复四次构成。 (或者子字符串 “abcabc” 重复两次构成。)思路一:找出字符串s所有可能的子字符串,子字符串的长度应为字

2020-08-24 16:04:41 203

原创 重构二行二进制矩阵(题目来自LeetCode)

给你一个 2 行 n 列的二进制数组:矩阵是一个二进制矩阵,这意味着矩阵中的每个元素不是 0 就是 1。第 0 行的元素之和为 upper。第 1 行的元素之和为 lower。第 i 列(从 0 开始编号)的元素之和为 colsum[i],colsum 是一个长度为 n 的整数数组。你需要利用 upper,lower 和 colsum 来重构这个矩阵,并以二维整数数组的形式返回它。如果有多个不同的答案,那么任意一个都可以通过本题。如果不存在符合要求的答案,就请返回一个空的二维数组。示例 1

2020-08-24 14:53:31 197

原创 有效的数独(题目来自LeetCode)

有效的数独:判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[ ["5","3",".",".","7",".",".",".","."], ["6",".",".","1","9","5",".",".",

2020-08-23 16:38:53 171

原创 求数组元素的前K个高频元素

给定一个非空的整数数组,返回其中出现频率前 k 高的元素。要求时间复杂度必须优于O(nlogn)示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]思路一:数组排序利用Map集合统计数组元素各自出现的频率,将结果放入数组进行排序。代码如下: public int[] topKFrequent(int[] nums, int k) { Map<Int

2020-08-23 13:21:30 502

原创 斐波那切数列引发的思考

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。思路一:递归法由斐波那契数的定义我们可以得出以下结论:1、当N<2时,F(N) = N2、当N>=2时,F(N)=F(N-1)+F(N-2)代码如下: public int fib(

2020-08-22 10:54:14 187

原创 回文子串的数量(题目来自LeetCode)

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。回文子串:指的是一个字符串顺序遍历与逆序遍历得到的结果是一样的。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:"abc"输出:3解释:三个回文子串: "a", "b", "c"示例 2:输入:"aaa"输出:6解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"思路一:暴力破解法列举所有的可能的子串,并判断其是否为回文子串。代码如下

2020-08-19 15:34:01 3249

原创 合并K个升序列表(题目来自LeetCode)

给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists = []

2020-08-17 23:49:20 410

原创 逆波兰表达式求值(题目来自LeetCode)

根据 逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入: ["4", "13", "5", "/", "+"]输出: 6

2020-08-17 10:09:45 481

原创 求解数组元素的平方

这是一道快手面试算法题:给定一个有序的整数数组(包含正数,负数,零,可以重复)问这个数组的平方有多少种情况?例如;{-1,-1,0,1,1} 有{1,0}两种情况。{-4,-2,0,2,4,5}有{16,4,0,25}四种情况。要求:时间复杂度为O(n),空间复杂度为O(1);...

2020-08-16 18:16:58 1618

原创 岛屿数量(题目来自LeetCode)

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[['1','1','1','1','0'],['1','1','0','1','0'],['1','1','0','0','0'],['0','0','0','0','0']]输出: 1示例 2:输入:[['1','1','0','0','0'],['

2020-08-16 18:03:06 154

原创 有效的括号(题目来源LeetCode)

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出: false示例 5:输入: "{[]}"输出: true解题思路:这

2020-08-14 08:53:40 94

原创 整数反转(来自LeetCode)

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。官方算法://pop operation:pop = x % 10;x /= 10;//push operation:t

2020-08-14 01:03:06 66

原创 两数相加(题目来自LeetCode)

题目描述:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807解题思路:对应位数相加,如果满十,则该位数值为对应数值

2020-08-13 17:17:33 136

原创 字符串相乘(题目来自LeetCode)

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头,除非是数字 0 本身。不能使用任何标准库的大数类型(比如 Big

2020-08-13 13:06:24 94

原创 克隆图的java实现

每日LeetCode算法分享克隆图的java实现克隆图的解法思路:1、广度优先遍历法:从任意节点开始克隆,克隆完当前节点之后遍历当前节点的邻居节点,直到克隆完所有的节点。2、深度优先遍历法:从任意节点开始克隆,克隆完当前节点之后遍历当前节点的左(或右)邻居节点,一直往一个方向直到克隆完所有的节点。克隆图的java实现给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node {

2020-08-13 00:09:51 221

原创 java实现背包密码算法

java实现如下(笔者还没有写二进制转换,会在之后更新)package com.ibianma.bianmalilun;import java.util.Scanner;/** * 背包密码算法 */public class KnapsackCode { /** * 求两个整数的最大公因子 * @param a 是一个较大的整数 * @param b 是一个较小的整数 * @return 两个整数的最大公因子 */ publ.

2020-05-26 20:36:49 532

原创 java实现队列两种方式

方案一:数组实现实现方法:用front来记录队列首元素的位置,用rear来记录队列尾元素的位置。入队列的时候只需要将待入队列的元素放到下标为rear的位置即可,同时执行rear++。出队列的时候front++即可优点:实现简单。缺点:出队列后数组的前半部分空间不能充分的利用。实现代码如下:package com.ibianma.zifuchuan;import java.util.ArrayList;/** * 数组实现一个队列 * @param <T> */publ

2020-05-14 20:36:12 389

原创 java实现栈的两种方法

用java实现一个栈(链表实现)链表实现栈的优点:使用灵活方便、只要有需要的时候才会申请空间链表实现的缺点:除了要储存元素外,还需要额外储存指针(引用)信息代码实现如下:package com.ibianma.zifuchuan;/** * 定义一个链表 * @param <T> */class LNode<T>{ T data; LNode<T> next;}/** * 栈的实现 * @param <T> */

2020-05-13 19:12:33 514

原创 java手写代码实现对字符串进行反转

java对字符串进行反转任务要求:实现字符串的反转,不使用任何系统的方法,且时间复杂度最小。直接变换法,在这里采用异或实现。原理如下:a^a=0, a^0=a,且异或操作满足交换律与结合律。若要交换两个变量,则可以采用以下方法实现。a=a^b;b=a^b;//b=(a^b)^b=a^(b^b)=a^0=aa=a^b;//a=a^(a^b)=(a^a)^b=0^b=b实现代码如下:package com.ibianma.zifuchuan;public class ReverseStr

2020-05-13 13:23:56 426

原创 java求一个字符串的全排列(并去除重复的排列)

java递归实现一个字符串的全排列算法:递归实现代码如下:package com.ibianma.zifuchuan;import java.lang.String;public class FullPermutation { /** * 将索引为i与j处的字符交换 * @param chars 字符数组 * @param i * @param j */ public static void exChange(char[] ch

2020-05-12 21:10:25 611 2

原创 MTALAB实现多表代替密码(维吉尼亚密码)

维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。设d为一固定的正整数,d个位移代换表π=(π1,π2,…,πd),由密钥序列K=(k1,k2,…,kd)给定,第 i+td个明文字母由表πi决定。即密钥ki决定加密算法如下:ek(xi+td)=(xi+td+ki)mod(q)e_k(x_{i+td})=(x_{i+td}+k_i)mod...

2020-04-30 08:17:29 1907

原创 MATLAB实现滚动密钥密码

滚动密钥密码对于周期代换密码,当密钥的长度d和明文一样长时,就成为滚动密钥密码。具体可见如下表所示:明文meetatnineintheevening密钥beijingmeetatnineinthe密文NIMCIGTURIBNMUMRZMABUKMATLAB代码如下:function keyT = getKey(key,plaintext)%getKey...

2020-04-30 08:16:40 708

原创 java实现滚动密钥密码

滚动密钥密码对于周期代换密码,当密钥的长度d和明文一样长时,就成为滚动密钥密码。具体可见如下表所示:明文meetatnineintheevening密钥beijingmeetatnineinthe密文NIMCIGTURIBNMUMRZMABUKjava代码实现如下:package com.ibianma;/** * 滚动密钥密码 */publi...

2020-04-28 16:39:57 550

原创 java实现多表代替密码(维吉尼亚密码)

维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。设d为一固定的正整数,d个位移代换表π=(π1,π2,…,πd),由密钥序列K=(k1,k2,…,kd)给定,第 i+td个明文字母由表πi决定。即密钥ki决定加密算法如下:ek(xi+td)=(xi+td+ki)mod(q)e_k(x_{i+td})=(x_{i+td}+k_i)mod...

2020-04-28 14:40:03 2153

原创 MATLAB实现密匙短语密码

密匙短语密码的实现步骤1、选取密匙并去除重复字符如:university -->universty2、密匙共有10个单词,从第11个字符开始,用universty按顺序进行代替配置3、将其余17个字母按自然顺序排列以university为密匙的换字表明文字母abcdefghijklmnopqrstuvwxyz密文字表JKLMOPQWXZUNIVERSTYA...

2020-04-27 21:31:05 1367

原创 java实现密匙短语密码

密匙短语密码的实现步骤1、选取密匙并去除重复字符如:university -->universty2、密匙共有10个单词,从第是11个字符开始,用universty按顺序进行代替配置3、将其余17个字母按自然顺序排列以university为密匙的换字表明文字母abcdefghijklmnopqrstuvwxyz密文字表JKLMOPQWXZUNIVERSTY...

2020-04-23 16:48:02 710

原创 java环境变量的配置与原理

如何配置java的环境变量(以windows10为例)一、配置JAVAHOME1、右键单击我的电脑->选择属性->单击高级系统设置

2020-04-23 12:57:07 261

原创 C#实现等差与等比数列求和

用C#实现以下两个求和:1、2+4+6+……+1002、2+22+23+24+……+210程序如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1...

2020-04-22 17:48:43 2102

原创 用java实现仿射密码的控制台小程序

仿射密码算法(java实现)加密算法最近刚学习了编码理论课程的仿射密码算法,就被老师要求实现仿射密码对26个英文字母的加密和解密。对于我这个狂热的java爱好分子来说当然采用java来实现啦。也希望可以帮助到和我有一样爱好的小伙伴哦。仿射密码的加密函数:ek(x)=ax+b(mod 26),a,b∈Z26要求唯一解的充要条件是gcd(a,26)=1gcd是最大公因数的意思该仿射密码的...

2020-04-22 10:44:00 347

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除