![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
Shadownow
北京交通大学软件工程专业在读大学生
展开
-
力扣LeetCode算法打卡学习第8天
三、字符串中的第一个唯一字符给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。1、我的——用哈希表统计class Solution { public int firstUniqChar(String s) { Map<String, Integer> hashtable = new HashMap<String, Integer>(); //用哈希表统计字符串出现次数 for (int原创 2021-03-01 16:16:03 · 172 阅读 · 0 评论 -
力扣LeetCode算法打卡学习第7天
二、整数反转给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。1、我的class Solution { public int reverse(int x) { boolean check=false; if(x<0){ x=-x; c原创 2021-02-25 14:59:05 · 181 阅读 · 0 评论 -
力扣LeetCode算法打卡学习第6天
开始与字符串相关的题一、反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。方法一:我的class Solution { public void reverseString(char[] s) { int length=s.length; for原创 2021-02-18 10:59:09 · 172 阅读 · 1 评论 -
力扣LeetCode算法打卡学习第5天
七、加一给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数0之外,这个整数不会以零开头。方法:我的算法,由于我没有看到官方答案,这里便只给我的代码分享。class Solution { public int[] plusOne(int[] digits) { int length=digits.length; //最后一位加一 digits[len原创 2021-02-06 17:31:07 · 230 阅读 · 0 评论 -
力扣LeetCode算法打卡学习第4天
五、只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?方法1:我的,但是使用了排序的话,复杂度应该就不符合线性的要求了class Solution { public int singleNumber(int[] nums) { if(nums.length<2){ return nums[0];原创 2021-01-28 10:50:37 · 214 阅读 · 4 评论 -
力扣LeetCode算法打卡学习第3天
4.存在重复元素给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。方法1:我的,但是超出时间限制class Solution { public boolean containsDuplicate(int[] nums) { int length = nums.length; for(int i=0;i<length;i++){ for(原创 2021-01-19 15:58:33 · 166 阅读 · 0 评论 -
力扣LeetCode算法打卡学习第2天
3.旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。方法一:自己的笨办法class Solution { public void rotate(int[] nums, int k) { if(k>=0){ int length = nums.length; k = k%length; int num=0; int[] nums1 = new in原创 2021-01-19 10:19:12 · 169 阅读 · 0 评论 -
力扣LeetCode算法打卡学习第1天
第1题给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。解题:用双指针法因为会改动数组的内容,因此传回删除之后的数组长度时,取此长度的数组内容即可。public int removeDuplicates(int[] nums) { if (nums.length == 0) return 0; int i = 0; for (i原创 2021-01-13 17:42:14 · 205 阅读 · 0 评论