leetcode算法数组篇day01-02

数据结构:逻辑结构+物理结构
逻辑结构可分为:集合结构、线性结构、树形结构、图形结构。
物理结构可分为:顺序存储结构、链式存储结构。
算法特性:输入、输出、有穷性、确定性、可行性。
时间复杂度以及空间复杂度的计算方法
初始化数组+遍历赋值
学习字符串中的字符遍历方法charAt()
学习StringBuilder 的基本方法
**

数组篇day01

**

1.数组串联

初始化数组+遍历赋值

class Solution {
    public int[] getConcatenation(int[] nums) {
        int[] newNums = new int[2*nums.length];
        for(int i=0;i<nums.length;i++){
            newNums[i] = nums[i];
            newNums[i+nums.length] = nums[i];
        }
        return newNums;
    }
}

2.宝石与石头

1)暴力解法:
学习字符串中的字符遍历方法charAt(),将大的放在最外层遍历,如果判断相等,结果累加!

class Solution {
    public int numJewelsInStones(String jewels, String stones) {
        //暴力解法
        int result=0;
        for(int i=0;i<stones.length();i++){
            char stone = stones.charAt(i);
            for(int j=0;j<jewels.length();j++){
                char je = jewels.charAt(j);
                if(je==stone){
                    result++;
              
                } 
            }
        }
        return result;
    }
}

2)使用hashset
注意:Character为封装类。char为基本数据类型
hashset中判断存在的方法contains()

class Solution {
    public int numJewelsInStones(String jewels, String stones) {
        int result=0;
        Set<Character> set = new HashSet<Character>();
        for(int i=0;i<jewels.length();i++){
            set.add(jewels.charAt(i));
        }
        for(int i=0;i<stones.length();i++){
            if(set.contains(stones.charAt(i))){
                result++;
            }
        } 
        return result;
    }
}

**

数组篇day02

**

1.一维数组的动态和

1)原地变化

class Solution {
    public int[] runningSum(int[] nums) {
        for(int i=1;i<nums.length;i++){
            nums[i]+=nums[i-1];
        }
        return nums;
    }
}

2)动态规划

class Solution {
    public int[] runningSum(int[] nums) {
        int n = nums.length;
        int[] result = new int[n];
        result[0] = nums[0];
        for(int i=1;i<n;i++){
            result[i]=result[i-1]+nums[i];       
        }
        return result;
    }
}```
## 2.转换成小写字母

**
学习StringBuilder 的基本方法,创建,append,toString()方法等。
class Solution {
    public String toLowerCase(String s) {
        // return s.toLowerCase();
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<s.length();i++){
            char ch = s.charAt(i);
            if(ch>=65 && ch<=90){
                ch |= 32;
            }
            sb.append(ch);
        }
        return sb.toString();
     
    }
}

## 3.最富有客户的资产总量
class Solution {
    public int maximumWealth(int[][] accounts) {
        int m=accounts.length, n = accounts[0].length;
        int sum = 0;
        for(int i=0;i<m;i++){
            for(int j=0;j<n-1;j++){
                accounts[i][j+1]+=accounts[i][j];
            }
            sum=Math.max(sum,accounts[i][n-1]);
        }
        return sum;
    }
}

Arrays.stream(account).sum() 用处是数组求和。
**
class Solution {
    public int maximumWealth(int[][] accounts) {
        int maxWealth = Integer.MIN_VALUE;
        for (int[] account : accounts) {
            maxWealth = Math.max(maxWealth, Arrays.stream(account).sum());
        }
        return maxWealth;
    }
}**


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值