每日都有新收获(6.5更新)
5.26
String的public String substring(int beginIndex)
返回一个字符串,该字符串是此字符串的子字符串。 子字符串以指定索引处的字符开头,并扩展到该字符串的末尾。
以及public String substring(int beginIndex,int endIndex)
返回一个字符串,该字符串是此字符串的子字符串。 子串开始于指定beginIndex并延伸到字符索引endIndex - 1 。 因此,子串的长度为endIndex-beginIndex 。
5.29
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。
解:解题思路见力扣大佬Ikaruga打家劫舍I|打家劫舍II|打家劫舍III。
6.1
给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写(指拼写词汇表中的一个单词)时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。
解:此题使用hashmap数组可解决。
收获:Map中的getOrDefault方法:(可以在此题中用到)
default V getOrDefault(Object key, V defaultValue)
当Map集合中有key时,用这个key值;如果没有,使用默认值defaultValue
6.5
//输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
//
// 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
// 示例 1:
//
// 输入:target = 9
// 输出:[[2,3,4],[4,5]]
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class addequalss {
public int[][] findContinuousSequence(int target) {
List<int[]> result = new ArrayList<>();
int i = 1;
while(target>0)
{
target -= i++;
if(target>0 && target%i == 0)
{
int[] array = new int[i];
for(int k = target/i, j = 0; k < target/i+i; k++,j++)
{
array[j] = k;
}
result.add(array);
}
}
Collections.reverse(result);
return result.toArray(new int[0][]);
}
//
// 作者:VaporMax
// 链接:https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/solution/java-shuang-100-by-vapormax/
// 来源:力扣(LeetCode)
// 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
// 先试2个连续数相加,此时是a+(a+1)。俩连续数相加和为target意味着target-1之后,可以整除2。
// 如果可以被三个连续数相加,那么是a+(a+1)+((a+1)+1),这就是在target减1之后,再减2,(即把第二项和第三项此时多出来的1减掉),这时可以整除3,并且除3得到的数就是起始数字。
// 如果可以被4个连续数相加得到,此时把target再减去3,重复以上步骤。不能整除就是说不能由i个连续数相加得到。可以把数字想象成一个个杆,你做不断削顶的操作,连续数的和为target的可以全部找出来。
}
好像想明白了些什么,但又说不出来,回头再更

浙公网安备 33010602011771号