Java
wyq小白
one小白的成长记录
展开
-
约瑟夫问题升级版
约瑟夫问题升级版编号为1~N的N个人按顺时针方向围坐一圈,每人持有一个密码(正整数,可以自由输入),开始人选一个正整数作为报数上限值M,从第一个人按顺时针方向自1开始顺序报数,报道M时停止报数。报M的人出列,将他的密码作为新的M值,从他顺时针方向上的下一个人开始从1报数,如此下去,直至所有人全部出列为止。分析:升级版的约瑟夫问题,就是在每个人的手中拿了一个密码,当这个人死了之后,拿着这个手中...原创 2019-12-26 17:01:01 · 371 阅读 · 0 评论 -
约瑟夫问题(GIF图解)
约瑟夫问题据说著名犹太历史学家Josephus有过一下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲在一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3个人该人必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus和他的朋友并不想遵从,Josephus要他的朋友...原创 2019-12-26 10:36:19 · 1040 阅读 · 0 评论 -
LeetCode88. 合并两个有序数组
88. 合并两个有序数组给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m ...原创 2019-12-18 08:34:44 · 350 阅读 · 0 评论 -
Leetcode674. 最长连续递增序列
Leetcode674. 最长连续递增序列给定一个未经排序的整数数组,找到最长且连续的的递增序列。示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。示例 2:输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 ...原创 2019-12-17 14:49:30 · 366 阅读 · 0 评论 -
LeetCode605. 种花问题(GIF图解)
LeetCode605. 种花问题假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,...原创 2019-12-03 16:29:11 · 306 阅读 · 0 评论 -
LeetCode27. 移除元素(图解)
LeetCode27. 移除元素给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2,...原创 2019-12-04 23:17:09 · 362 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II(图解)
122. 买卖股票的最佳时机 II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 ...原创 2019-12-03 09:22:48 · 468 阅读 · 0 评论 -
LeetCode283. 移动零(图解)
LeetCode283. 移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/move-zero...原创 2019-12-02 17:43:19 · 352 阅读 · 0 评论 -
LeetCode268. 缺失数字(图解)
LeetCode268. 缺失数字给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/missing-numbe...原创 2019-12-02 14:43:15 · 666 阅读 · 2 评论 -
LeetCode219. 存在重复元素 II(GIF图解)
LeetCode219. 存在重复元素 II给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:...原创 2019-11-30 21:10:08 · 330 阅读 · 2 评论 -
LeetCode217.存在重复元素(GIF图解)
LeetCode217.存在重复元素给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true来源:力扣(...原创 2019-11-29 22:29:46 · 224 阅读 · 1 评论 -
Java 对象和类
一、对象1、对象的定义对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。一个对象的状态(也称特征或属性)是由具有当前值的数据域来表示的。例如:圆对象具有一个数据域 radius, 它是标识圆的属性。一个矩形对象具有数据域 width 和 height,它们都是描述矩形的属性。— 个对象的行为(b...原创 2019-11-28 14:49:58 · 249 阅读 · 0 评论 -
LeetCode121.买卖股票的最佳时机(图解)
LeetCode121.买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大...原创 2019-11-27 08:46:49 · 191 阅读 · 0 评论 -
LeetCode1217.玩筹码(图解)
LeetCode1217.玩筹码数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中。你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以):将第 i 个筹码向左或者右移动 2 个单位,代价为 0。将第 i 个筹码向左或者右移动 1 个单位,代价为 1。最开始的时候,同一位置上也可能放着两个或者更多的筹码。返回将所有筹码移动到同一位置(任意位置)上所需要的最小...原创 2019-11-26 19:05:40 · 499 阅读 · 0 评论 -
Leetcode509. 斐波那契数(GIF图解)
Leetcode509.斐波那契数斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定 N,计算 F(N)。**示例 1**:输入:2输出:1解释:F(2) = F(1) +...原创 2019-11-25 20:44:08 · 807 阅读 · 0 评论 -
LeetCode1160.拼写单词
LeetCode1160.拼写单词给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。**示例 1**:输入:wo...原创 2019-11-20 21:35:01 · 271 阅读 · 0 评论 -
五子棋(命令行版本)
五子棋:命令行版本五子棋,用户输入当前棋子坐标,将棋子放入棋盘中。解析:1、首先创建一个棋盘,建立二维数组,将数组的值赋予“+”;2、打印棋盘;3、创建一个下棋的函数,黑方棋子为“o”,白方棋子为“x”;黑白棋子交替,我们用奇数偶数分别代表黑方、白方;4、判别输赢,对每个方向的棋子都要判断是否有5个连续一样的,有则游戏结束。判断棋子:本应该判断8个方向的棋子,但是每5个棋子的头和尾可...原创 2019-11-18 21:21:33 · 1236 阅读 · 0 评论 -
多维数组及for-each循环
一、多维数组1、数组的创建多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组.声明二维数组的语法:数据类型 [ ][ ]数组名;数组的初始化:数组名=new 数据类型[length1][length2];注意:使用语法new int[5][ ]创建数组时,必须指定一个下标。语法new int[ ][ ]是错误的。例如:1.//创建一个5...原创 2019-11-14 15:45:19 · 1475 阅读 · 0 评论 -
Java方法(函数)和数组
一、方法1、方法的定义Java方法是为完成一个操作而组合在一起的语句组。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用2、方法的优点使程序变得更简短而清晰。有利于程序维护。可以提高程序开发的效率。提高了代码的重用性。3、方法的定义修饰符 返回值类型 方法名(参数类型 参数名){…方法体…return 返回值;}...原创 2019-10-31 22:01:48 · 427 阅读 · 0 评论 -
选择控制和循环语句
一、选择控制1、单分支if语句2、双分支if-else语句3、switch语句原创 2019-10-25 16:59:37 · 367 阅读 · 0 评论 -
Java的基础知识总结
一、标识符在代码中我们所看到的main、input、double、int等都是出现在程序事物得名字,在程序设计术语中,这样的名字称为标识符(identifier)。所有的标识符都必须遵循以下规则:标识符是由字母、数字、下划线(_)和美元符号($)构成的字符序列。标识符必须以字母、下划线(_)或美元符号($)开头,不能以数字开头。标识符不能是保留字(例:double、int、new等)标...原创 2019-10-24 22:02:51 · 199 阅读 · 1 评论