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

发布时间:2024年01月16日

242.有效的字母异位词

暴力大法好:

public class Solution {
    public bool IsAnagram(string s, string t) {
        if(s.Length!=t.Length)
        {
            return false;
        }
        for (int i=0;i<s.Length;i++)
        {
            for(int k=0;k<t.Length;k++)
            {
                if(t[k]==s[i])
                {
                    t=t.Remove(k,1);
                    k=0;
                    break;
                }
            }
        }
        if(t.Length==0)
        {
            return true;
        }
        return false;
    }
}

首先确保两个字符串长度相同,如果不同直接返回False。进行双层For循环,拿一个字符串作为基准,另一个各元素进行比较,若果有相同的直接移除出字符串,然后For循环从头开始并且跳出内层循环,基准字符串指针后移一位重复此操作。当基准字符串来到了末尾就去判断内层循环的字符串是非为空(也就是每个元素都相同都被移除了,只剩空串),如果是则可以返回True,否则返回False。

349.两个数组的交集

public class Solution {
    public int[] Intersection(int[] nums1, int[] nums2) {
        int [] hash1=new int[1001];
        int [] hash2=new int[1001];
        int cnt=0;
        int a=0;
        for(int i=0;i<nums1.Length;i++)
        {
            hash1[nums1[i]]++;
        }
        for(int i=0;i<nums2.Length;i++)
        {
            hash2[nums2[i]]++;
        }
        for(int i=0;i<hash1.Length;i++)
        {
            if(hash1[i]!=0&&hash2[i]!=0)
            {
                cnt++;
            }
        }
        int []ans=new int[cnt];
        for(int i=0;i<hash1.Length;i++)
        {
            if(hash1[i]!=0&&hash2[i]!=0)
            {
                ans[a++]=i;
            }
        }
        return ans;
    }
}

首先创建两个Hash数组,数组长度按照题目条件设置为1001,遍历两个数组,分别将两个数组元素作为Hash数组下标,在对应下标的值上++操作,然后创建一个返回结果的数组,但数组长度需要遍历两个Hash数组,找到两个数值值处都不为零的下标,则改处则是满足题意的交集,则该处的个数则为需要开设返回数组的长度,最后将该下标作为交集插入数组并返回出去。

202.快乐数

列表法:

public class Solution {
    public bool IsHappy(int n) {
        List<int> list=new List<int>();
        int temp=n;
        while(true)
        {
            int sum=0;
        while(temp>0)
        {
            int last=temp%10;
            sum+=last*last;
            temp/=10;
        }
        temp=sum;
        if(temp==1)
        {
            return true;
        }else
        {
            if(list.Contains(temp))
            {
                return false;
            }else
            {
                list.Add(temp);
            }
        }
        }
        return false;
    }
}

首先要进行求平方操作,则需要单独分离个位和其他位,将其最后的结果放入List列表,如果不满足题意Temp==1,则重复平方操作,要么最终满足Temp==1,要么就会在List列表找到这个值,说明之前放入过了,是一个循环,直接返回False,符合题意则返回True。

class Solution { public boolean isHappy(int n) 
                    { 
                    return true; 
                    } 
               } 

直接返回True,希望大家永远开心就完事了!

1.两数之和

暴力法:

public class Solution {
    public int[] TwoSum(int[] nums, int target) {
        int i=0;
        int k=0;
        for(i=0;i<nums.Length;i++)
        {
            for(k=i+1;k<nums.Length;k++)
            {
                if(nums[k]+nums[i]==target)
                {
                    return [i,k] ;
                }
            }
        }
        return [] ;
    }
}

看到有朋说说这是小时候最害怕的一集,不要怕,要找两个数相加等于Target,For它就完了,直接两个For循环相当于两个指针,一个固定一个挨着找,找完一圈,固定的往后动一下,另一个在挨着找,如果都找完了,不好意思直接返回[],因为找不到符合题意的。要是找到了,直接将这两个指针塞进Int类型数组返回出去就完了。

别再说[有人相爱,有人夜里开车看海,有人力扣第一题就做不出来]~

文章来源:https://blog.csdn.net/ShengHuoWeiYang/article/details/135603771
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。