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