[打卡帖]《LeetCode零基础指南》(第五天) 指针

执久呀
Java领域优质创作者
2021-12-04 17:30:19
加精

 

 

第一题:1470. 重新排列数组


class Solution {
    public int[] shuffle(int[] nums, int n) {
        //只需两个数的步长为n就在一起,在新的数组,因为一次加了两个元素,
        //所以每一次下来都得加2
          int arr[]=new int[2*n];
          for(int i=0,j=0;i<n;i++,j+=2){
             arr[j]=nums[i];
             arr[j+1]=nums[i+n];
          }
          return arr;
    }
}

第二题:1929. 数组串联 



class Solution {
    public int[] getConcatenation(int[] nums) {
        //在n和2n分别弄两个索引进行拷贝就可以了
        int n=nums.length;
         int arr[]=new int [2*n];
         int j=0;
         for(int i=0;i<2*n;i++){
             if(i<n){
                 arr[i]=nums[i];
             }else{
                 arr[i]=nums[j];
                 j++;
             }
         }
         return arr;
    }
}

 第三题:1920. 基于排列构建数组
这题按照题目的意思就可以了
 


class Solution {
    public int[] buildArray(int[] nums) {
        int n= nums.length;
        int []arr=new int[n];
        for(int i=0;i<n;i++){
            arr[i]=nums[nums[i]];
        }
        return arr;
    }
}

  第四题:1480. 一维数组的动态和




class Solution {
    public int[] runningSum(int[] nums) {
             int count=0;
             int n=nums.length;
                int arr[]=new int[n];
             for(int i=0;i<nums.length;i++){
                  count=soul(nums,i+1);
                  arr[i]=count;
             }   
             return arr; 
    }
  public static int soul(int nums[],int n){
      int sum=0;
        for(int i=0;i<n;i++){
             sum+=nums[i];
        }
         return sum;
  }
}

 第五题:剑指 Offer 58 - II. 左旋转字符串





class Solution {
    public String reverseLeftWords(String s, int n) {
            StringBuilder sb=new StringBuilder();
            for(int i=n;i<s.length();i++){
                  sb.append(s.charAt(i));//从n开始得到每个字符
            }
            for(int i=0;i<n;i++){
                sb.append(s.charAt(i));//将第一个到n依次加到之前的后面
            }
            return sb.toString();//转为字符串后返回
    }
}

 第六题:1108. IP 地址无效化


class Solution {
class Solution {
    public String defangIPaddr(String address) {
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<address.length();i++){
            if(address.charAt(i) == '.'){
                sb.append("[.]");
                continue;//dang
            }
            sb.append(address.charAt(i));
        }
        return sb.toString();
    }
}

//法二:速度慢些,因为调用equals方法
class Solution {
    public String defangIPaddr(String address) {
     StringBuilder sb=new StringBuilder();
     for(int i=0;i<address.length();i++){
         String s=address.charAt(i)+"";//变成字符串
         if(s.equals(".")){
          sb.append("[.]");
         continue; 
        }
        sb.append(s);   
     }
     return sb.toString();

     }
}

第七题:剑指 Offer 05. 替换空格 



class Solution {
    public String replaceSpace(String s) {
         StringBuilder sb=new StringBuilder();
         for(int i=0;i<s.length();i++){
             if(s.charAt(i)==' '){
                 sb.append("%20");
                 continue;
             }
             sb.append(s.charAt(i));
         }
         return sb.toString();
    }
}

 第八题:1365. 有多少小于当前数字的数字
 


class Solution {
    public int[] smallerNumbersThanCurrent(int[] nums) {
             int count=0;
             int n=nums.length;
                int arr[]=new int[n];
             for(int i=0;i<n;i++){
                  count=soul(nums,i);
                  arr[i]=count;
             }   
             return arr; 
    }
  public static int soul(int nums[],int n){
      int sum=0;
        for(int i=0;i<nums.length;i++){
            if(n!=i){
                if(nums[n]>nums[i]){
                    sum++;
                }
            }
        }
         return sum;
  }
}

 第九题:剑指 Offer 17. 打印从1到最大的n位数


class Solution {
    public int[] printNumbers(int n) {
        int number=1;
        //几个n就弄到几位数
        for(int i=0;i<n;i++){
            number*=10;
        } 
        //由题可知申请number-1即可
         int []arr=new  int[number-1];
       for(int i=0,j=1;i<number-1;i++,j++){
           arr[i]=j;
       }
       return arr;
    }
}

 第十题:1389. 按既定顺序创建目标数组

class Solution {
    public int[] createTargetArray(int[] nums, int[] index) {
        List<Integer> list=new ArrayList<Integer>();
        int []target=new int[index.length];
        for(int i=0;i<index.length;i++){
            list.add(index[i],nums[i]);
        }
        //迭代器遍历
        Iterator<Integer> it=list.iterator();
        int i=0;
        while(it.hasNext()){
            target[i++]=it.next();
        }
          return target;
    }
}


 

...全文
138 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

64,111

社区成员

发帖
与我相关
我的任务
社区描述
学习「 算法 」的捷径就是 「 题海战略 」,社区由「 夜深人静写算法 」作者创建,三年ACM经验,校集训队队长,亚洲区域赛金牌,世界总决赛选手。社区提供系统的训练,答疑解惑,面试经验,大厂内推等机会
社区管理员
  • 英雄哪里出来
  • 芝麻粒儿
  • Amy卜bo皮
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

QQ群:480072171

英雄算法交流 8 群

 

试试用AI创作助手写篇文章吧