算法
Memorial*
我只想静静的写程序
展开
-
LeetCode--852. 山脉数组的峰顶索引
符合下列属性的数组 arr 称为 山脉数组 :arr.length >= 3存在 i(0 < i< arr.length - 1)使得:arr[0] < arr[1] < ... arr[i-1] < arr[i]arr[i] > arr[i+1] > ... > arr[arr.length - 1]给你由整数组成的山脉数组 arr ,返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < ar.原创 2021-06-15 23:16:31 · 244 阅读 · 0 评论 -
LeetCode 374题 猜数字大小
题目描述:猜数字游戏的规则如下:每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0):-1:我选出的数字比你猜的数字小 pick < num1:我选出的数字比你猜的数字大 pick > num0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pic原创 2021-06-14 22:35:02 · 189 阅读 · 2 评论 -
leetCode28. 实现 strStr()
实现strStr()函数。给你两个字符串haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回-1 。说明:当needle是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当needle是空字符串时我们应当返回 0 。这与 C 语言的strstr()以及 Java 的indexOf()定义相符。示例 1:输入:hayst...原创 2021-04-20 22:02:46 · 73 阅读 · 0 评论 -
默默刷题---------215. 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4采用冒泡排序:public class Demo09 { public static void main(String[] args) { int[] arr= {3,2,3,..原创 2020-06-29 20:54:50 · 153 阅读 · 0 评论 -
leetcode---面试题29. 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix =[[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 1000 <= matrix[i].length&...原创 2020-06-05 14:58:31 · 145 阅读 · 0 评论 -
LeetCode-238. 除自身以外数组的乘积
给你一个长度为n的整数数组nums,其中n > 1,返回输出数组output,其中 output[i]等于nums中除nums[i]之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分...原创 2020-06-04 14:17:44 · 169 阅读 · 0 评论 -
python数据结构之排序、查找算法
1.排序算法"""排序 - 冒泡排序、选择排序、归并排序、快速排序冒泡排序 - O(n ** 2):两两比较,大的下沉35, 97, 12, 68, 55, 73, 81, 4035, 12, 68, 55, 73, 81, 40, [97]12, 35, 55, 68, 73, 40, [81]12, 35, 55, 68, 40, [73]...选择排序 - O(n **...原创 2019-08-20 22:13:06 · 378 阅读 · 0 评论 -
无权二分图的最大匹配和完美匹配等
这篇文章讲无权二分图(unweighted bipartite graph)的最大匹配(maximum matching)和完美匹配(perfect matching),以及用于求解匹配的匈牙利算法(Hungarian Algorithm);不讲带权二分图的最佳匹配。二分图:简单来说,如果图中点可以被分为两组,并且使得所有边都跨越组的边界,则这就是一个二分图。准确地说:把一个图的顶点划分为两个...转载 2019-04-15 19:46:51 · 1299 阅读 · 0 评论 -
LeetCode 14——最长公共前缀
题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:原创 2019-03-16 22:10:10 · 118 阅读 · 0 评论 -
LeetCode13——罗马数字转整数
题目:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个...原创 2019-03-14 16:49:39 · 79 阅读 · 0 评论 -
P、NP、NPC、和NP-Hard相关概念
一、相关概念 P: 能在多项式时间内解决的问题NP: 不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题NPC: NP完全问题,所有NP问题在多项式时间内都能约化(Reducibility)到它的NP问题,即解决了此NPC问题,所有NP问题也都得到解决。NP hard:NP难问题,所有NP问题在多项式时间内都能约化(Reducibility)到...原创 2019-02-22 12:27:01 · 360 阅读 · 0 评论 -
LeetCode7.整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 ...原创 2019-01-15 17:10:10 · 312 阅读 · 0 评论 -
LeetCode43------两数相乘
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长度小于110。 num1 和原创 2019-01-08 16:53:44 · 670 阅读 · 0 评论 -
Java----封装的实现---使用访问控制符
java是使用“访问控制符”来控制哪些细节需要封装,哪些需要暴露的。java中的4种“访问控制符”分别为private、default、protected、public,它们说明了面向对象的封装性,所以我们要利用它们尽可能的让访问权限降到最低,从而提高安全性。下面详细讲述它们的访问权限问题。其访问权限范围如表5-1所示。表5-1 访问权限修饰符 1. private 表示...原创 2019-01-13 13:16:00 · 377 阅读 · 0 评论 -
Leetcode2.两数相加-----------链表
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。伪代码如下:将当前结点初始化为返回列表的哑结点。 将进位 carrycarry 初始化为 00。 将 pp 和 qq 分别...原创 2019-01-07 15:16:38 · 195 阅读 · 0 评论 -
Java数据结构之冒泡排序
冒泡排序:/** * N個數字要完成排序,總共進行N-1趟排序,每i趟排序次數為(N-1)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。 * * @author Memorial * */public class BubbleSort { public static void main(String[] args) { int a[] = {...原创 2018-12-30 15:18:41 · 147 阅读 · 0 评论 -
Python面向对象技术
对象(object):基本上可以看做数据(特性)以及由一系列可以存取、操作这些数据的方法所组成的集合。使用对象替代全局变量和函数的原因有很多种,其中对象最重要的优点包括以下几点:多态(Polymorphism):意味着就算不知道变量所引用的对象类型是什么,还是能对它进行操作,而它也会根据对象(或类)类型的不同而表现出不同的行为。封装(Encapsulation):指向程序中的其他部...原创 2018-12-14 16:25:08 · 208 阅读 · 0 评论 -
Python函数之递归(用递归实现二分查找)
递归:简单来说就是引用(或者调用)自身的意思。#阶乘def factorical(n): result=n for i in range(1,n): result *=i return resultprint(factorical(12))输出:479001600代码实现二分查找法:#实现二分查找法def search(sequ...原创 2018-12-13 21:32:26 · 2533 阅读 · 0 评论