java学习 leetcode24交换链表节点 200岛屿数量 +一些开发任务
1. 24两两交换链表节点
1.迭代法 由单链表的修改 节点的指向,示意图,注意前后顺序
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }//迭代法*/
// class Solution {
// public ListNode swapPairs(ListNode head) {// ListNode dummy = new ListNode(0);
// dummy.next = head;
// ListNode prev = dummy;// while(prev.next != null && prev.next.next != null){
// ListNode first = prev.next;
// ListNode second = prev.next.next;// prev.next= second;
// first.next = second.next;
// second.next = first; // prev = first;
// }// return dummy.next;
// }
// }
2.递归法 简洁些,比较难想
//递归法class Solution {public ListNode swapPairs(ListNode head) {if(head == null || head.next == null){return head;}ListNode first = head;ListNode second = head.next;first.next = swapPairs(second.next);second.next = first;return second;}
}
就是最后的两个交换,然后作为值swapPairs()返回
2. 200岛屿数量
class Solution {public int numIslands(char[][] grid) {//我的思路:按照上下左右,有值就赋予一个字母;没有就赋值一个不同的字母值,看字母值//另一个思路就是遇到一个1,就会展开上下左右的搜索,并把检测到的相邻1赋值0//直到达到边界条件int count = 0;for(int i= 0;i<grid.length;i++){for(int j= 0; j< grid[0].length;j++){if(grid[i][j] == '1'){dfs(grid,i,j);count ++;}}}return count;}private void dfs(char[][] grid,int i,int j){if(i<0 || j <0 || i>=grid.length || j>= grid[0].length || grid[i][j] == '0') return;grid[i][j] = '0';dfs(grid, i +1,j);dfs(grid,i,j+1);dfs(grid,i,j-1);dfs(grid,i-1,j);}
}
//思路就是遇到一个1,就会展开上下左右的搜索,并把检测到的相邻1赋值0
//直到达到边界条件
3.开发:内网启动fastapi,swagger ui
1.这里swagger页面访问不了,发现少css等东西。首先看了其他的swagger ui启动所需要的python依赖
2.然后改代码,js、cs、css、redoc调用url或者在自己的运行文件目录下,装static/css等
3.联调测试发现两个问题:
一个是文档解析的时候,有个文件解析接口,不会在我写的方法里立刻返回,需要等待,这里文件写的就有漏洞了;
二是在向量化和milvus搜索的服务配置到fastapi的app的startup中时,发现有一个向量化服务的类
textembedding() 后端返回“嵌入服务未初始化”