获得徽章 0
- 轮转数组
//方法1:使用额外的数组
public class ordinaryArray_rotate {
public static void main(String[] args) {
int nums[] = {1,2,3,4,5,6,7};
int k = 3, n = nums.length;
int[] res = new int[n];
for (int i = 0; i < n; ++i) {
//就是想不到这一步 太巧了!!找数字规律像脑筋急转弯
res[(i + k) % n] = nums[i];
}
System.*arraycopy*(res, 0, nums, 0, n);
}
}展开评论点赞 - //leetcode_27_移除元素
//双指针
//先动fast,如果fast不等于val,即不需要移除,slow跟着移动
//如果fast等于val,即需要移除,fast进下一位slow不动
class Solution {
public int removeElement(int[] nums, int val) {
int slow = 0;
for(int fast = 0; fast < nums.length; fast++) {
if(nums[fast] != val) {
nums[slow] = nums[fast];
slow++;
}
}
return slow;
}
}展开评论点赞 - //增强for循环,左边数据类型+变量,右边是数组/集合。
//表示对于数组 `strs` 中的每个元素,将其逐个赋值给变量 `str`。循环会依次迭代数组 `strs` 中的所有元素,并执行循环体中的代码。
for (String str : strs) {
//对于每个字符串 str,将其转换为字符数组 array。
char[] array = str.toCharArray();
//对字符数组进行排序,使得所有异位词都变成相同的字符串。
Arrays.sort(array);
//创建一个新的字符串 key,使用排序后的字符数组作为参数。
String key = new String(array);
//使用键 key 在 HashMap 中获取对应的值,如果没有则返回一个空的字符串列表。
List<String> list = map.getOrDefault(key, new ArrayList<String>());
//将当前字符串 str 添加到列表中。
list.add(str);
//将更新后的列表放回 HashMap 中,使用键 key。
map.put(key, list);
}展开评论点赞 - //l左边界,r右边界,size有效窗口大小,count需要字符个数,start为有效窗口的开始下标
int l = 0, r = 0, size = Integer.MAX_VALUE, count = t.length(), start = 0;
while(r < s.length()){
char c = s.charAt(r);
if(need[c]>0){//说明该字符我们需要
count--;
}
//这里将r遍历的字符都加入到了窗口中,如果是无关的字符会变成负数
//如果是需要的字符就会减一,出现多余的也会变成负数
need[c]--;
if(count == 0){//说明区间已经拿到了所有需要的字符
//这里有两种情况,一种是区间不需要的字符,还有一种是重复的需要字符
//总之就是去掉冗余的字符,缩小区间
while(l < r && need[s.charAt(l)] < 0){
need[s.charAt(l)]++;
l++;
}
if(r-l+1<size){
size = r-l+1;
start = l;
}
need[s.charAt(l)]++;
l++;
count++;
}
//右边界右移
r++;
}
return size == Integer.MAX_VALUE ? "" : s.substring(start, start + size);展开评论点赞 - //主要是语法不熟悉
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
//创建一个空的 HashMap,用于存储分组后的结果。键是排序后的字符串,值是对应的字符串列表。
//左边是键的类型,右边是值的类型
Map<String, List<String>> map = new HashMap<String, List<String>>();
//增强for循环,左边数据类型+变量,右边是数组/集合。
//表示对于数组 `strs` 中的每个元素,将其逐个赋值给变量 `str`。循环会依次迭代数组 `strs` 中的所有元素,并执行循环体中的代码。
for (String str : strs) {
//对于每个字符串 str,将其转换为字符数组 array。
char[] array = str.toCharArray();
//对字符数组进行排序,使得所有异位词都变成相同的字符串。
Arrays.sort(array);
//创建一个新的字符串 key,使用排序后的字符数组作为参数。
String key = new String(array);
List<String> list = map.getOrDefault(key, new ArrayList<String>());
//将当前字符串 str 添加到列表中。
list.add(str);
//将更新后的列表放回 HashMap 中,使用键 key。
map.put(key, list);
}
return new ArrayList<List<String>>(map.values());
}
}展开评论点赞 - 图片的base64编码就是可以将一张图片数据编码成一串字符串,使用该字符串代替图像地址url
在前端页面中常见的base64图片的引入方式:
<img src="data:image/png;base64,iVBORw0..>
1. **优点**
(1)base64格式的图片是文本格式,占用内存小,转换后的大小比例大概为1/3,降低了资源服务器的消耗;
(2)网页中使用base64格式的图片时,不用再请求服务器调用图片资源,减少了服务器访问次数。
2. **缺点**
(1)base64格式的文本内容较多,存储在数据库中增大了数据库服务器的压力;
(2)网页加载图片虽然不用访问服务器了,但因为base64格式的内容太多,所以加载网页的速度会降低,可能会影响用户的体验。
说明:医院logo图片小,因此上传医院logo是可以使用base64格式保存展开评论点赞