IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 代码随想录算法训练营第六天242、349、202、1 -> 正文阅读

[数据结构与算法]代码随想录算法训练营第六天242、349、202、1

242. Valid Anagram

题目链接:https://leetcode.cn/problems/valid-anagram/

方法一 哈希思想 + 数组

1 方法思想

因为是字符串,只有26个字幕,使用长度为26得数组,存储第一个字符串中得字符出现得标志位,遍历第二个验证字符是否存在。

2 代码实现

class Solution {
    public boolean isAnagram(String s, String t) {
        		
		int lenS = s.length();
		int lenT = t.length();
		if (lenS != lenT) return false;
		int[] times = new int[26];
		for (int i = 0; i < lenS; i++) {
			char cur = s.charAt(i);
			times[cur - 'a']++;
		}
		for (int i = 0; i < lenT; i++) {
			//times[cur - 'a']++;
			char cur = t.charAt(i);
			if (times[cur - 'a'] <= 0){
				return false;
			}
			times[cur - 'a']--;
		}
		return true;
    }
}

3 复杂度分析

时间复杂度:O(n)
空间复杂度:O(s), s = 26

4 涉及到知识点

哈希思想,字母对应得ASCII值是多少。

方法二 排序

1 方法思想

将两个字符串转成字符数组,并对字符数组进行排序,然后从头开始遍历两个字符串是否相同。

2 代码实现

3 复杂度分析

时间复杂度:O(nlogn)
空间复杂度:O(n)

4 涉及到知识点

收获和总结

1.遇到的困难?

2 收获

学习链接

https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html#%E6%80%9D%E8%B7%AF

349. Intersection of Two Arrays

题目链接:https://leetcode.cn/problems/intersection-of-two-arrays/

方法一 哈希思想 + 数组

1 方法思想

哈希思想加数组,和242得思想一样,这种情况适合用于数据量小得情况。

2 代码实现

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        int num1Len = nums1.length;
		int num2Len = nums2.length;
		int[] ans = new int[num1Len];
		int[] times = new int[1001];
		int len = 0;
		for (int i = 0; i < num1Len; i++) {
			times[nums1[i]] ++;
		}
		for (int i = 0; i < num2Len; i++) {
			if (times[nums2[i]] >= 1){
				ans[len ++] = nums2[i];
			}
			times[nums2[i]] = 0;
		}
		
		return Arrays.copyOfRange(ans, 0, len);
    }
}

3 复杂度分析

时间复杂度:O(n/m)
空间复杂度:O(1)

4 涉及到知识点

哈希思想

方法二 HashSet

1 方法思想

2 代码实现

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
       	
		Set<Integer> num1Set = new HashSet<>();
		int[] ans = new int[nums2.length];
		int len = 0;
		for (int i = 0; i < nums1.length; i++) {
			num1Set.add(nums1[i]);
		}
		for (int i = 0; i < nums2.length; i++) {
			if (num1Set.contains(nums2[i])){
				ans[len ++] = nums2[i];
				num1Set.remove(nums2[i]); // 保证保存结果的数组中没有重复值
			}
		}
		
		return Arrays.copyOfRange(ans, 0, len);
    }
}

3 复杂度分析

时间复杂度:O(nlogn)
空间复杂度:O(n)

4 涉及到知识点

收获和总结

1.遇到的困难?

2 收获

学习链接

https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html#%E6%80%9D%E8%B7%AF

202. Happy Number

题目链接:https://leetcode.cn/problems/happy-number/

方法一 哈希思想 + 数组

1 方法思想

判断有没有重复出现数字,如果重复出现,则成环。

2 代码实现

class Solution {
	public boolean isHappy(int n) {
		Set<Integer> set = new HashSet<>();
		while (n != 1 && !set.contains(n)){
			set.add(n);
			n = getHappyNumber(n);
		}
		return n == 1;
	}
	
	public int getHappyNumber(int num){
		int sum = 0;
		while (num > 0){
			sum += Math.pow(num%10, 2);
			num /= 10;
		}
		return sum;
	}
}

3 复杂度分析

时间复杂度:O(logN)
空间复杂度:O(logN)

4 涉及到知识点

哈希思想

1. Two Sum

题目链接:https://leetcode.cn/problems/two-sum/

方法一 哈希思想 + 数组

1 方法思想

判断有没有重复出现数字,如果重复出现,则成环。

2 代码实现

class Solution {
    public int[] twoSum(int[] nums, int target) {
   		int[] ans = new int[2];
		HashMap<Integer, Integer> hashMap = new HashMap<>();
		int len = nums.length;
		for (int i = 0; i < len; i++) {
			if (hashMap.containsKey(target - nums[i])){
				ans[0] =  i;
				ans[1] = hashMap.get(target - nums[i]);
				return ans;
			}else {
				hashMap.put(nums[i], i);	
			}
			
		}
		
		return null;
    }
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:49:39  更:2022-11-05 00:51:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 14:35:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码