首页 > 编程语言 >代码随想录算法训练营第五天

代码随想录算法训练营第五天

时间:2023-09-11 20:11:06浏览次数:41  
标签:set return int 训练营 随想录 length new 第五天 LeetCode

代码随想录算法训练营第五天 | LeetCode 242(有效的字母异位词) LeetCode 349(两个数组的交集) LeetCode 202(快乐数) LeetCode 1(两数之和)

242:有效的字母异位词

LeetCode 242(有效的字母异位词)

class Solution {
    public boolean isAnagram(String s, String t) {
        int length = s.length();
        if(length != t.length()){
            return false;
        }
        //构建一个长度为26的数组
        int[] count = new int[26];
        for(int i = 0; i < length; i++){
            //维护count数组
            count[s.charAt(i) - 'a']++;
            count[t.charAt(i) - 'a']--;
        }
        //遍历count数组 如果有的元素不为零0,说明字符串s和t一定是谁多了字符或者谁少了字符,return false
        for(int i = 0; i < count.length; i++){
            if(count[i] != 0){
                return false;
            }
        }
        return true;
    }
}

349:两个数组的交集

LeetCode 349(两个数组的交集)

import java.util.HashSet;
import java.util.Set;
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> set = new HashSet<Integer>();
        Set<Integer> res = new HashSet<Integer>();
        //遍历nums1
        for (int num : nums1) {
            set.add(num);
        }
        //遍历nums2
        for (int num : nums2) {
            //判断set是否含有当前num 含有则表示该元素同时出现在了两个数组中 即为交集
            if (set.contains(num)) {
                res.add(num);
            }
        }
        return res.stream().mapToInt(x -> x).toArray();
    }
}

202:快乐数

LeetCode 202(快乐数)

import java.util.HashSet;
import java.util.Set;
class Solution {
    public boolean isHappy(int n) {
        Set<Integer> set = new HashSet<>();
        int temp;
        int i;
        while ( n != 1 && !set.contains(n)){
            set.add(n);
            temp = 0;
            i = n;
            //模拟求平方和
            while(i > 0){
                temp += (i % 10)*(i % 10);
                i = i / 10;
            } 
            n = temp;
        }
        return n == 1;
    }
}

1:两数之和

LeetCode 1(两数之和)

import java.util.HashMap;
import java.util.Map;
class Solution {
    public int[] twoSum(int[] nums, int target) {
        //使用map存储 
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        for (int i = 0; i < nums.length; i++) {
            //边遍历边寻找
            if(map.containsKey(nums[i])){
                return new int[]{i,map.get(nums[i])};
            }
            map.put(target - nums[i],i);
        }
        return null;
    }
}

标签:set,return,int,训练营,随想录,length,new,第五天,LeetCode
From: https://www.cnblogs.com/Q316/p/17694389.html

相关文章

  • 代码随想录:● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98
     654.最大二叉树 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。通过给定的数组构建最大二叉树,并且输出这个......
  • 【腾讯云 Cloud Studio 实战训练营】 - 云IDE编程之旅化繁为简
    csdn首发文章链接一、前言:随着云计算产业的发展,各种基于云端的IDE相继出现。相比于传统的IDE,云端IDE可以更大程度的提升用户工作的效率。腾讯云与国内领先的一站式软件研发平台CODING联合推出一款完全基于云端的IDE:CloudStudio。作为一款在线云端开发工具,它可以帮助用户减......
  • 代码随想录算法训练营-回溯算法|491.递增子序列
    491. 递增子序列 不对原数组进行排序,利用set对同层的子集进行去重。1classSolution:2deffindSubsequences(self,nums):3result=[]4path=[]5self.backtracking(nums,0,path,result)6returnresult78......
  • 代码随想录算法训练营第四天| 24. 两两交换链表中的节点, 19.删除链表的倒数第N个结点
    24.两两交换链表中的节点mydemo(超时)/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListNode(intx):val(x),next(nullptr){}*ListNode(intx,Lis......
  • 代码随想录算法训练营第三天| 203.移除链表元素 707.设计链表 206.反转链表
    203.移除链表元素链表定义structListNode{intval;ListNode*next;ListNode():val(0),next(NULL){};ListNode(intx):val(x),next(NULL){};ListNode(intx,ListNode*next):val(x),next(next){};}1.在原链表上移除链表元素classSolut......
  • [代码随想录]Day40-动态规划part08
    题目:139.单词拆分思路:单词就是物品,字符串s就是背包,单词能否组成字符串s,就是问物品能不能把背包装满。拆分时可以重复使用字典中的单词,说明就是一个完全背包!动规五部曲分析如下:确定dp数组以及下标的含义:dp[i]:字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字......
  • 代码随想录刷题记录——栈与队列篇
    栈与队列理论基础 栈stack:先进后厨队列queue:先进先出STL(C++标准库)STL栈和队列属于容器适配器(containeradapter)优先队列priority_queue:默认大根堆,如果是pair<a,b>,默认比较a大小如果需要比较b大小,且小根堆,可以如下实现232.用栈实现队列题目链接 pop操作时,当......
  • 2023牛客暑期多校训练营4
    A.BoboStringConstruction题意:给定一个01串t,构造一个长度为n的01串s,时的t+s+t中t只在首和尾出现。分析:结论,s取全0或者全1。①假设t全0或者全1,那我s和t取相反的即可。②假设t既包含0又包含1,首先t不可能是s的子串,那我们只需考虑t是否可以由t的后缀加上s再加上t的前缀得......
  • 代码随想录算法训练营第二天| 977.有序数组的平方,209.长度最小的子数列,59.螺旋矩阵Ⅱ
    977.有序数组的平方双指针法因为负数平方后也会变大,所以较大的平方值只可能在靠近两端的位置,越往中间走平方值必定越小。所以,在原数组两端各定义一个指针,慢慢往中间走,然后把平方值按顺序放到新数组里即可。classSolution{public:vector<int>sortedSquares(vector<i......
  • 代码随想录刷题记录——双指针篇
    27.移除元素题目链接快慢指针,最终返回index值为移除元素后的数组末尾元素下标+1.#include<vector>usingnamespacestd;classSolution{public:intremoveElement(vector<int>&nums,intval){//快慢指针intnums_length=nums.size();......