当前位置: 首页 > news >正文

codetop高频(2)

三数之和

注意先排序,然后第一个位置重复了跳过,里面重复了跳过

注意指针不要越界。

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>>ans=new ArrayList<>();Arrays.sort(nums);int pre=nums[0]-1;int len=nums.length;for(int i=0;i<len-2;i++){if(nums[i]==pre)continue;pre=nums[i];for(int j=i+1,k=len-1;j<k;){int sum=nums[i]+nums[j]+nums[k];if(sum>0)k--;else if(sum<0)j++;else{ans.add(Arrays.asList(nums[i],nums[j],nums[k]));while(j<k&&nums[j]==nums[j+1])j++;j++;}}}return ans;}
}

最大子数组和

使用在线处理算法,前面的为负数就丢掉。

也可以用dp

class Solution {public int maxSubArray(int[] nums) {int sum=Integer.MIN_VALUE;int pre=0;for(int i:nums){pre+=i;sum=Math.max(sum,pre);if(pre<0)pre=0;}return sum;}
}

合并两个有序链表

一个循环判断即可,比较当前节点的值小的放进来,然后移动两个指针。

初始化一个头结点,和一个新链表指针。

/*** 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 mergeTwoLists(ListNode list1, ListNode list2) {ListNode hh=new ListNode(0);ListNode pre=hh;while(list1!=null||list2!=null){int lnode=list1!=null?list1.val:200;int rnode=list2!=null?list2.val:200;if(lnode<rnode){pre.next=list1;list1=list1.next;}else{pre.next=list2;list2=list2.next;}pre=pre.next;}return hh.next;}
}

手撕快速排序

主函数直接调用,quicksort分左右两侧遍历,不稳定,元素相等会交换位置。

还有swap函数,注意i,j,l,r的大小关系

class Solution {public int[] sortArray(int[] nums) {quicksort(0,nums.length-1,nums);return nums;}void swap(int i,int j,int []nums){int t=nums[i];nums[i]=nums[j];nums[j]=t;}void quicksort(int l,int r,int []nums){if(l>=r)return ;int x=nums[(l+r)/2],i=l-1,j=r+1;while(i<j){do i++;while(nums[i]<x);do j--;while(nums[j]>x);if(i<j)swap(i,j,nums);}quicksort(l,j,nums);quicksort(j+1,r,nums);return ;}
}

最长回文子串

dp(最佳写法,还有中心扩散法但不如dp)

<2直接返回,默认最小值为1,dp[i][j]表示i到j的字符串是否回文

如果i==j并且字符串长度小于等于3(2、3长度回文)或i-1==j+1(3以上长度回文)就让dp为true

class Solution {public String longestPalindrome(String s) {if(s.length()<2)return s;int len=s.length();int ansStart=0;int ansEnd=0;int max=1;boolean dp[][]=new boolean[len][len];for(int i=1;i<len;i++){for(int j=0;j<i;j++){if(s.charAt(i)==s.charAt(j)&&(i-j<=2||dp[i-1][j+1])){  dp[i][j]=true;if(i-j+1>max){ansStart=j;ansEnd=i;max=i-j+1;}}}}return s.substring(ansStart,ansEnd+1);}
}

http://www.dtcms.com/a/492490.html

相关文章:

  • 网站建设的客户在哪里大学生网页设计期末作业
  • 利用RPA技术,重塑企业核心业务流程
  • Qwen3 Embedding报告随笔
  • 做网站的公司有哪些岗位做网站怎么接广告赚钱
  • HTML列表、表格和表单
  • 软件发布网站源码百度只更新快照不收录网站
  • 郑州营销网站建设公司网站建设的目的
  • 资兴市网站建设哪个好页面设计培训多少钱
  • 哪种语言做的网站好专业seo服务
  • 推广网站怎么做知乎咸阳seo优化
  • 模具加工东莞网站建设技术支持阿里云电影网站建设教程
  • 建设部网站投诉核查企业名单江西省工程造价信息网官网
  • pkg-config 使用指南(简化C++库的编译和链接过程,判断库是否存在及版本)
  • 移动端网站模板怎么做服装网站建设公司有哪些
  • 秦皇岛seo网站推广营销系统平台
  • 游戏平台网站建设推广营销软件
  • LangChain HelloWorld
  • 重庆小程序开发哪家好网站优化具体是怎么做的
  • [嵌入式系统-123]:中高端图形处理器RM Mali-G610 MP4 GPU 是 ARM 公司推出的基于 Valhall 架构 的移动 GPU
  • 广西玉林建设厅官方网站html网页制作视频教学
  • 网站制作公司报价广东省建设厅官方网(官网)
  • 新吴区推荐做网站价格网站字体规范
  • 自动化运维新时代:智能调度与监控让集成更简单
  • Fiddler 2:Fiddler 抓包工具使用;配置支持HTTPS抓包;抓特定请求的包;如何快速抓取想要的包;抓包信息解析
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析11
  • 网站空间有哪些wordpress启用GZIP压缩
  • 手机版网站建设开发农产品网站建设投标书
  • 喀什的网站怎么做个人建设什么网站好
  • 网站建设买阿里云云服务器西安网页设计培训费用
  • 销售型网站有哪些金舵设计园在线设计平台