首页 > 其他分享 >11.7打卡

11.7打卡

时间:2023-11-07 23:04:53浏览次数:29  
标签:return matrix nums int res 11.7 new 打卡

1. N皇后II(52)

返回N皇后的解集数量

class Solution {
    public int totalNQueens(int n) {
        int[] queeens =new int[n];
        Arrays.fill(queeens,-1);
        Set<Integer> cols= new HashSet<>(n);
        Set<Integer> dia1= new HashSet<>(n);
        Set<Integer> dia2= new HashSet<>(n);
        
        List<Integer> list = new ArrayList<>();
        List<List<Integer>> res = new ArrayList<>();
        bfs(queeens,cols,dia1,dia2,0,n,list,res);
        return res.size();
    }
    public void bfs(int[] queeens, Set<Integer> cols,Set<Integer> dia1 ,Set<Integer> dia2,int i,int n,List<Integer> list,List<List<Integer>> res){
        if(i==n){
            res.add(list);
            return;
        }else{
            for(int k= 0; k<n;k++){
               
                if(cols.contains(k)){
                    continue;
                }
                int id1 =i-k;
                if(dia1.contains(id1)){
                    continue;
                }
                int id2 = k+i;
                if(dia2.contains(id2)){continue;}
                queeens[i]=k;
                cols.add(k);
                dia1.add(id1);
                dia2.add(id2);
                list.add(queeens[i]);
                bfs(queeens,cols,dia1,dia2,i+1,n,list,res);
                queeens[i]=-1;
                cols.remove(k);
                dia1.remove(id1);
                dia2.remove(id2);
                list.remove(list.size()-1);
                            
                }
        }
    }

}

2. 最大子数组合(53)

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和

class Solution {
    public int maxSubArray(int[] nums) {
        int[] dp = new int[nums.length];
        dp[0]=nums[0];
        for(int i= 1;i<nums.length;i++){
            if(dp[i-1]>0)
            dp[i] = dp[i-1]+nums[i];
            else dp[i]=nums[i];
        }
        int max= dp[0];
        for(int i= 1;i<nums.length;i++){
            if(dp[i]>max){
                max = dp[i];
            }
        }
        return max;
    }
}

3. 螺旋矩阵(54)

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

class Solution {
   public List<Integer> spiralOrder(int[][] matrix) {
        if(matrix == null ||matrix.length ==0||matrix[0].length==0)
            return new ArrayList<>();
        ArrayList<Integer> res = new ArrayList<>();
        int l=0,r=matrix[0].length-1,u=0,d=matrix.length-1;
        while (true){
            for (int i =l;i<=r;i++) res.add(matrix[u][i]);
            if(++u>d)   break;
            for (int i =u;i<=d;i++) res.add(matrix[i][r]);
            if(--r<l)   break;
            for (int i =r;i>=l;i--) res.add(matrix[d][i]);
            if(--d<u)   break;
            for (int i =d;i>=u;i--) res.add(matrix[i][l]);
            if(++l>r)   break;
        }
        return res;
    }
}

4. 跳跃数组(55)

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。

class Solution {
    public boolean canJump(int[] nums) {
           int maxjump = 0;
        for (int i = 0; i < nums.length; i++) {
            if (i <= maxjump) {
                maxjump = Math.max(maxjump, nums[i] + i);
                if (maxjump >= nums.length - 1)
                    return true;
            }
        }

        return false;
    }
}

5. 合并区间(56)

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

class Solution {
    public int[][] merge(int[][] intervals) {
 if(intervals.length<=1){
            return intervals;
        }

        Arrays.sort(intervals, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0]-o2[0];
            }
        });
        List<int[]> res= new ArrayList<>();
        for (int i = 0; i <intervals.length ; i++) {

            if(res.size()==0||intervals[i][0]>res.get(res.size()-1)[1]){
                res.add(intervals[i]);
            }else {

                res.get(res.size()-1)[1]=Math.max(intervals[i][1], res.get(res.size()-1)[1]);
            }

        }
        return res.toArray(new int[res.size()][2]);
    }
}

 

标签:return,matrix,nums,int,res,11.7,new,打卡
From: https://www.cnblogs.com/forever-fate/p/17816272.html

相关文章

  • 2023.11.7值得推荐的一款服务器空间
    ,已经体验一个月咯,非常不错的免费资源,适合大家去了解了解~!他们家的免费空间,免费服务器,非常稳定,非常靠谱,值得拥有,价格厚道~!免备案服务,域名管理等等服务,应有尽有,2023年你值得了解,他们家的免费云服务器还是独立IP的哦,非常非常好,非常NICE~!官网地址:https://www.sanfengyun.com......
  • 11.7
    Vue指令bind,if,for,show的学习<!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metaname="viewport"content="width=device-width,initial-scale=1.0">  <title>......
  • 2023.11.7——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.mybatis明日计划:学习......
  • 11.7 咸花
    标题是咸豆花吗说起来我还没吃过甜豆花,在南方也没吃。很累,心态其实不差,但是魔怔不动了,只能走意识流。中午跟学长骂了某人,气话留到NOIP退役记写。本部的好老师和生源都在流失中哦这个趋势,二中迟早完蛋,各种意义上。吉林下大雪停课了都,但是前天石家庄还下雨呢...好冷。......
  • 11.7每日总结
    实验报告题目:熟悉常用的Linux操作和Hadoop操作姓名:江新兵 日期:2023.11.07实验环境:vmware虚拟机搭载centos7的linux环境和hadoop3.3.4版本实验内容与完成情况: cd切换文件目录的使用 先使用ls命令查看/usr目录的东西,再用mkdir命令新建文件夹。 ......
  • 11.7日记
    cp命令:复制文件或目录(9)将当前用户的主文件夹下的文件.bashrc复制到目录“/usr”下,并重命名为bashrc1sudocp~/.bashrc/usr/sudomv/usr/.bashrc/usr/.bashrc1(10)在目录“/tmp”下新建目录test,再把这个目录复制到“/usr”目录下mkdir/tmp/testsudocp-r/tmp/test/usr/mv命......
  • 11.7 英语精读
     Citywalk"Citywalks"arethelatestchilltraveltrendtosweepChiensesocilamedia,wherethey'reseenasabudget-friendlywaytosoakinsomelocalcolor,andavoidpotentiallyoverrateddestinations.By"roaming"onf......
  • nfls 11.7 挂分日志
    不是,nfls你别太荒谬,天天出黑,这是NOIP模拟赛不是NOIPro模拟赛。T1一个很明显能看出来的一个匹配过程,考场上没想到可以用两个优先队列来模拟这个匹配过程,贺了个匈牙利二分图匹配上去,但是!!!下面这一段代码记死了,不要用!!!lltot,h[N];structedge{llv,ne;}e[M];#define......
  • 2023.11.7
    A给出\(n\),构造最大的\(m\)和\(\{(a,b,c)_m\}\),值域为\([0,n]\)且无偏序关系。\(n\le600\)。显然构造所有的\(\displaystylea+b+c=\lfloor\frac{3n}{2}\rfloor\)即可。点击查看代码#include<bits/stdc++.h>#defineN605usingnamespacestd;intread(){ int......
  • 20231107打卡
    上午的第一节课是算法与数据结构的课程。这门课程对于我们软工学生来说非常重要,因为它涉及到我们日后编写高效代码的能力。今天的内容是广度和深度优先搜索算法,在老师的讲解下,我逐渐理解了它们的原理和应用场景。通过讲解和举例,我们学习了如何使用这两种搜索算法解决实际问题。在......