LeetCode 课程 Task03 学习打卡(2022年12月04日)

第一天题目:

0314.反转字符串

标签:双指针

难度:简单

题目描述:

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

来源:力扣(LeetCode)
 

解题思路:

使用双指针,一个指向左端,一个指向右端,交换后,相向移动两个指针,完成遍历。

代码实现:

class Solution {
    public void reverseString(char[] s) {
        int left = 0;
        int right = s.length-1;
        while(left<right){
            char temp = s[left];
            s[left] = s[right];
            s[right] = temp;
            left++;
            right--;
        }
    }
}

第二天题目:

0367.有效的完全平方数

标签:遍历

难度:简单

题目描述:

给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。

进阶:不要 使用任何内置的库函数,如  sqrt 。

来源:力扣(LeetCode)
 

解题思路:

思路:1 = 1*1 = 1
4 = 2*2 = 1+3
9 = 3*3 = 1+3+5
16 = 4*4 = 1+3+5+7
以此类推,所以一个for循环num依次减去1、3、5、7.....,最后结果为正好等于0,代表num是完全平方数,否则,不是完全平方数。

代码实现:

class Solution {
    public boolean isPerfectSquare(int num) {
        //奇数的和最后等于num,则是完全平方数
        for(int i=1;num>0;i+=2){
            num-=i;
        }
        return num==0;
    }
}

第三天题目:

面试题16.07.最大数值

标签:三目运算符

难度:简单

题目描述:

编写一个方法,找出两个数字ab中最大的那一个。不得使用if-else或其他比较运算符。

解题思路:

解题思路:定义一个整型变量max保存a和b中较大的值,使用三目运算符判断a是否大于b,如果是,则将a赋值给max,若不是,则max=b。

代码实现:

class Solution {
    public int maximum(int a, int b) {
        int max=0;
        max=(a>b)?a:b;
        return max;
    }
}

第四天题目:

0066.加一

标签:加一

难度:简单

题目描述:

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

来源:力扣(LeetCode)


解题思路:

重要是看数组数是9的情况,比如99,999之类,这样的话+1会进一,数组长度也会增加,变成100,1000;
设置循环从后往前看,判断当前数组的数字是9的情况。如果不是9,直接加1并且返回数组;如果是9的话让当前位直接变成0,接着循环判断9的情况。
如果是类似于{‘9’,‘9’,‘9’}这种情况,我们还要建立一个新数组,新数组的长度要比输入的数组长度大一位,且第一位是1,后面都是0

代码实现:

 

第五天题目:

0013.罗马数字转整数

标签:switch语法

难度:简单

题目描述:

来源:力扣

解题思路: 

先用switch语句找到对应的字母,对应的整数存在nums数组中,如果小数字在大数字在就想减,最后将数组里的所有整数想加即可。

代码实现:

 

 

第六天题目:

0441.排列硬币

标签:

难度:简单

题目描述:

解题思路:

易知硬币排列的整数满足(a1 = 1, d = 1)的等差数列。

所以该等差数列的前n项和的公式为:Sn = n * a1 + n(n - 1) / 2

将Sn带入n的整数部分便是解。

推导过程如下:

故使用(int) (Math.sqrt((long) 8 * n + 1)- 1) / 2 返回n的整数部分即可

 代码实现:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值