首页 > 其他分享 >11.10打卡

11.10打卡

时间:2023-11-10 11:22:55浏览次数:43  
标签:digits 空格 int Solution 11.10 单词 打卡 public

1. 加1(66)

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字

class Solution {
    public int[] plusOne(int[] digits) {
    for (int i = digits.length-1; i >=0 ; i--) {
            digits[i]++;
            digits[i]=digits[i]%10;
            if(digits[i]!=0)
                return digits;
        }
        digits = new int[digits.length+1];
        digits[0]=1;
        return digits;
    }
}

2. 二进制求和(67)

给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和

class Solution {
    public String addBinary(String a, String b) {
         StringBuilder res = new StringBuilder();
        int alen= a.length()-1,blen= b.length()-1;
        if(alen<blen){
            return addBinary(b,a);
        }
        int cnt = 0;
        while (alen>=0){
            int a1 =a.charAt(alen)-'0';
            int b1=(blen<0)?0: b.charAt(blen)-'0';
            int sum = a1+b1+cnt;
            res.append(sum &1);
            cnt = sum>>1;
            alen--;
            blen--;
        }
         if((cnt&1)==1)
            res.append(cnt);
        return res.reverse().toString();
    }
}

3. 文本左右对齐(68)

给定一个单词数组 words 和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。

你应该使用 “贪心算法” 来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。

要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。

文本的最后一行应为左对齐,且单词之间不插入额外的空格。

思想:分类讨论

  • 当前行是最后一行:单词左对齐,且单词之间应只有一个空格,在行末填充剩余空格;
  • 当前行不是最后一行,且只有一个单词:该单词左对齐,在行末填充空格;
  • 当前行不是最后一行,且不只一个单词:
class Solution {
    public List<String> fullJustify(String[] words, int maxWidth) {
   List<String> res = new ArrayList<>();
        int right =0,n=words.length;
        while (true){
            int left = right; //当前行的第一个单词在word的位置
            int sumLen =0; //统计改行单词长度之和
            //循环确定当前行可以放置多少单词,单词之间至少有一个空格
            while (right<n && sumLen+words[right].length()+right-left<=maxWidth){
                sumLen+=words[right++].length();
            }
            //当前行是最后一行,单词左对齐,且单词之间应只有一个空格,在行末填充空格
            if(right==n){
                StringBuffer sb = join(words,left,n," ");
                sb.append(blank(maxWidth-sb.length()));
                res.add(sb.toString());
                return res;
            }
            int numWord = right-left;
            int numSpace = maxWidth-sumLen;
            //如果当前行只有一个单词,左对齐
            if(numWord==1){
                StringBuffer sb = new StringBuffer(words[left]);
                sb.append(blank(numSpace));
                res.add(sb.toString());
               continue;
            }
            //当前行不止一个单词
            int avgspace = numSpace/(numWord-1);
            int extraspace = numSpace%(numWord-1);
            StringBuffer sb= new StringBuffer();
            sb.append(join(words,left,left+extraspace+1,blank(avgspace+1)));
            sb.append(blank(avgspace));
            sb.append(join(words,left+extraspace+1,right,blank(avgspace)));
            res.add(sb.toString());
        }
    }

    private String blank(int i) {
        //返回长度为i 的空格字符串
        StringBuffer sb = new StringBuffer();
        for (int j = 0; j < i; j++) {
            sb.append(" ");
        }
        return sb.toString();
    }

    private StringBuffer join(String[] words, int left, int right, String space) {
        StringBuffer sb = new StringBuffer(words[left]);
        for (int i = left+1; i < right; i++) {
            sb.append(space);
            sb.append(words[i]);
        }
        return sb;
    }
    }

4. x的平方根(69)

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。

由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 

思想:二分查找

class Solution {
    public int mySqrt(int x) {
     //二分查找
        int l =0, r=x,ans=-1;
        while (l<=r){
            int mid = l+(r-l)/2;
            if((long)mid *mid <=x){
                ans=mid;
                l=mid+1;
            }else {
                r=mid-1;
            }
        }
        return ans;
    }
}

5. 爬楼梯(70)

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。

class Solution {
    public int climbStairs(int n) {
    int f0=1;int f1 =1;
      int k=2;
      while (k<=n){
          f0 =f0+f1;
          f1=f0-f1;
          k++;
      }
      return f0;
    }
}

 

标签:digits,空格,int,Solution,11.10,单词,打卡,public
From: https://www.cnblogs.com/forever-fate/p/17823662.html

相关文章

  • 每日总结11.10
    周报学习内容在本周,我专注于学习javaweb相关知识。我参考了多个教程和文档,通过编写简单的示例程序来加深理解。我学习了Servlet、JSP、JavaBean等基本概念,并了解了如何使用Tomcat作为服务器运行我的javaweb应用程序。工作进展在学习javaweb的过程中,我也进行了一些实践工作......
  • 20231109打卡
    早上,我准时开始了新一轮的学习。首先,我学习了算法与数据结构中的迪杰斯特拉算法和弗洛伊德算法。迪杰斯特拉算法是一种用来解决最短路径问题的算法,而弗洛伊德算法则可以求解任意两点之间的最短路径。通过课堂讲解和实例演示,我逐渐理解了它们的原理和应用。我通过编写代码实践了这......
  • 11.9打卡
    1. 不同路径(61)一个机器人位于一个 mxn 网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。classSolution{publicintuniquePaths(intm,intn){int[][]d......
  • 11月8每日打卡
    实验1熟悉常用的Linux操作和Hadoop操作1.实验目的Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作和Hadoop操作,为顺利开展后续其他实验奠定基础。2.实验平台(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);(2)Hadoop版本:3.1.3。3.......
  • 11.7打卡
    1.N皇后II(52)返回N皇后的解集数量classSolution{publicinttotalNQueens(intn){int[]queeens=newint[n];Arrays.fill(queeens,-1);Set<Integer>cols=newHashSet<>(n);Set<Integer>dia1=newHashSet<>......
  • 20231107打卡
    上午的第一节课是算法与数据结构的课程。这门课程对于我们软工学生来说非常重要,因为它涉及到我们日后编写高效代码的能力。今天的内容是广度和深度优先搜索算法,在老师的讲解下,我逐渐理解了它们的原理和应用场景。通过讲解和举例,我们学习了如何使用这两种搜索算法解决实际问题。在......
  • 20231106打卡
    上午的实训课程是机械拆装,这是我们软工专业的一门基础课程。在实训课上,我们学习了自行车的拆装技术。通过实际操作,我们了解了自行车的各个部件以及它们之间的组装方式。我们学习了如何正确使用工具,拆卸和安装自行车的零件,以及如何调整和维护自行车的性能。这门课程的实践性很强,不......
  • 11月5每日打卡
    实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠:代码Cat接口(另一个类似):publicinterfaceCat{voidcry();voidcatchMouse();}实体Cat类(另一个类似):publicclassConcreteCatimplementsCat{@Overridepublicvoidcry(){System.out.println("猫叫......
  • 11月6每日打卡
    实验9:桥接模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解桥接模式的动机,掌握该模式的结构;2、能够利用桥接模式解决实际问题。 [实验任务一]:两个维度的桥接模式用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。实验要求......
  • 11月7每日打卡
    用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。源码://Road.javapackageshiyan9;publicabstractclassRoad{protectedVehiclevehicle;publicvoidsetVehicle(Vehicleve){this.vehicle=ve;}publicabstractvo......