9.11力扣练习

242.有效异位词

 

//异位词(字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。),然后这题用哈希表的方法,第一个字符串用record数组记录

//各个字符出现的次数,然后再遍历下一个字符串减去出现的次数,最终如果record里面的值都为0.则为异位词。返回true,否则返回flase

class Solution {
    public boolean isAnagram(String s, String t) {
        int []record =new int[26];
        for(char c:s.toCharArray()){
            record[c-'a']+=1;
        }
        for(char c:t.toCharArray()){
            record[c-'a']-=1;
        }
        for(int i : record){
            if(i !=0){
                return false;
            }
        }
        return true;

    }
}

349两个数组的交集

 

//创建两个 HashSet 对象 set1 和 resSet。set1 用于存储 nums1 中的所有元素(去除重复),而 resSet 用于存储交集结果。

//遍历 nums1,将其中的每个元素添加到 set1 中。由于 HashSet 不允许重复元素,所以 nums1 中的重复元素会被自动忽略。

//遍历 nums2,对于 nums2 中的每个元素,检查它是否存在于 set1 中。如果存在,说明这个元素是 nums1 和 nums2 的交集的一部分,因此将其添加到 resSet 中。

//其中比较要注意的是这个哈希集合转换成整型数组,这里采用的操作是定义一个数组,然后遍历哈希表,将表内数据都取到数组里面,最后返回数组

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
  if (nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0) {
            return new int[0];
        }
        Set<Integer>set1 =new HashSet<>();
          Set<Integer>resSet =new HashSet<>();

for(int i : nums1){
    set1.add(i);
}

for(int i : nums2){
    if(set1.contains(i)){
        resSet.add(i);
    }
}



int[] resultArray = new int[resSet.size()];  
int i = 0;  
for (Integer num : resSet) {  
    resultArray[i++] = num;  
}  
return resultArray;


    }
}

539最小时间差

  • 逻辑
    1. 首先,使用 Collections.sort(timePoints); 对时间点列表进行排序,确保它们按照时间顺序排列。
    2. 初始化变量 ans 为 Integer.MAX_VALUE,用于存储找到的最小分钟差。
    3. 使用 getMinutes(timePoints.get(0)) 获取列表中第一个时间点的分钟表示,并存储在 t0Minutes 中。同时,将 preMinutes 也初始化为 t0Minutes,用于记录上一个时间点的分钟表示。
    4. 遍历排序后的时间点列表(从第二个时间点开始),对于每个时间点:
      • 使用 getMinutes(timePoints.get(i)) 获取当前时间点的分钟表示,并存储在 minutes 中。
      • 计算当前时间点和上一个时间点之间的分钟差,并更新 ans 为这个差值和当前 ans 中的较小值。
      • 更新 preMinutes 为当前时间点的分钟表示,以便在下一次迭代中使用。
    5. 循环结束后,还需要考虑首尾时间点的环绕差。这通过计算 (t0Minutes + 1440) - preMinutes(这里应该是 1440 而不是 1400,因为一天有1440分钟)来实现,并再次更新 ans 为这个差值和当前 ans 中的较小值。
    6. 返回 ans 作为结果。
class Solution {
    
    public int findMinDifference(List<String> timePoints) {
        Collections.sort(timePoints);
        int ans=Integer.MAX_VALUE;
        int t0Minutes=getMinutes(timePoints.get(0));
        int preMinutues=t0Minutes;
        for(int i=1;i<timePoints.size();++i){
            int minutes=getMinutes(timePoints.get(i));
            ans=Math.min(ans,minutes-preMintues);
            preMinutes=minutes;
        }
        ans=Math.min(ans,t0Minutes+1400-preMintues);
        return ans;

    }
    public int getMinutes(String t){
        return ((t.charAt(0) - '0') * 10 + (t.charAt(1) - '0')) * 60 + (t.charAt(3) - '0') * 10 + (t.charAt(4) - '0');

}
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
力扣是一个在线的编程题库,在其中有各种算法和数据结构的题目,供程序员进行练习力扣题库支持多种编程语言,包括Python。 力扣Python格式是指在力扣平台上使用Python语言解答问题时需要注意的一些细节和规范。以下是一些力扣Python格式的要点: 1. 导入模块:根据题目需要,导入相应的Python模块。常见的模块如:math、collections等。 2. 主函数:在解题时,将代码写在一个主函数中。通常命名为def main()。 3. 输入输出:遵循力扣的输入输出格式。使用input函数获取输入数据,使用print函数输出结果。 4. 命名规范:遵循Python的命名规范。变量和函数名采用小写字母与下划线的组合,以便于代码的可读性。 5. 注释:在关键代码处添加注释,描述代码功能和思路。这不仅方便自己理解和维护代码,也方便他人阅读。 6. 缩进:使用统一的缩进风格,通常为4个空格或者1个制表符。 7. 算法实现:根据题目要求,选择合适的算法进行实现。可以使用循环、条件判断、递归等常见的编程结构。 8. 异常处理:对于可能出现异常的地方,使用try-except语句进行异常处理。 9. 提交代码:在完成代码编写后,将代码复制到力扣平台的代码编辑器中,然后点击提交按钮进行代码评测。 总之,力扣Python格式主要是指在力扣平台上使用Python语言解题时需要遵守的编码规范和格式要求。遵循这些规范可以提高代码的可读性和可维护性,从而更好地解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值