zoukankan      html  css  js  c++  java
  • ATRS第十周打卡

    1.Algorithm

      https://leetcode-cn.com/problems/merge-two-sorted-lists/

      

    方法 1:递归

    想法

    我们可以如下递归地定义在两个链表里的 merge 操作(忽略边界情况,比如空链表等):

    left{ egin{array}{ll} list1[0] + merge(list1[1:], list2) & list1[0] < list2[0] \ list2[0] + merge(list1, list2[1:]) & otherwise end{array} ight.{list1[0]+merge(list1[1:],list2)list2[0]+merge(list1,list2[1:])list1[0]<list2[0]otherwise

    也就是说,两个链表头部较小的一个与剩下元素的 merge 操作结果合并。

    算法 我们直接将以上递归过程建模,首先考虑边界情况。 特殊的,如果 l1 或者 l2 一开始就是 null ,那么没有任何操作需要合并,所以我们只需要返回非空链表。否则,我们要判断 l1 和 l2 哪一个的头元素更小,然后递归地决定下一个添加到结果里的值。如果两个链表都是空的,那么过程终止,所以递归过程最终一定会终止。

    class Solution {
        public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            if (l1 == null) {
                return l2;
            }
            else if (l2 == null) {
                return l1;
            }
            else if (l1.val < l2.val) {
                l1.next = mergeTwoLists(l1.next, l2);
                return l1;
            }
            else {
                l2.next = mergeTwoLists(l1, l2.next);
                return l2;
            }
    
        }
    }

    2.Review

      https://link.medium.com/qNt4XAqc0W

    3.Tips  

      

    @PostMapping("/multiUpload")
    @ResponseBody
    public String multiUpload(HttpServletRequest request) {
        List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file");
        String filePath = "/Users/itinypocket/workspace/temp/";
        for (int i = 0; i < files.size(); i++) {
            MultipartFile file = files.get(i);
            if (file.isEmpty()) {
                return "上传第" + (i++) + "个文件失败";
            }
            String fileName = file.getOriginalFilename();
    
            File dest = new File(filePath + fileName);
            try {
                file.transferTo(dest);
                LOGGER.info("第" + (i + 1) + "个文件上传成功");
            } catch (IOException e) {
                LOGGER.error(e.toString(), e);
                return "上传第" + (i++) + "个文件失败";
            }
        }
    
        return "上传成功";
    
    }
    

      

    4.Share

      https://www.cnblogs.com/tanshaoshenghao/p/10924205.html

      javah常量池  把经常使用的数据放到内存中,避免重复的创建和销毁,实现数据共享,提高系统性能。

      从jdk1.7后,字符串常量池被实现在Java堆内存中

      String s1 = "hello"; String s2 = new String("hello");

      s1 是先去常量池中找,如果没有在new 放回常量池,s2 直接new 不经过常量池。

      String s1 = new String("hello ") + new String("world");

      现在堆中创建2个对象,在使用 stringBuilder进行拼接,然后产生新的对象 这时变量s1指向新对象"hello world".

      s1.intern();

      这个是去常量池中查询有无该字符串 如果有直接返回 没有,在常量池中注册该变量,然后再返回。

      String s1 = "hello "; String s2 = "world"; String s3 = s1 + s2; String s4 = "hello world"; System.out.println(s3 == s4);

      s3 是用stringbuilder进行拼接 new 出对象 所以s3 != s4

  • 相关阅读:
    Cocos2d-x场景生命周期函数介绍
    一致性hash算法在memcached中的使用
    linux操作系统下查看某rpm包是32bit 还是x64bit的命令
    JavaScript与Java通信
    DevExpress2011控件教程)编辑控件(comboBox,AspxCheckBox) 范例1
    Tips:javascript 图片放大和取得尺寸
    Eclipse颜色主题插件-Eclipse Color Theme
    Android Fragment 详解(一)
    《火球——UML大战需求分析》(第1章 大话UML)——1.4 如何学好UML?
    java.lang.UnsatisfiedLinkError: Native method not found 三种可能解决方案
  • 原文地址:https://www.cnblogs.com/panda777/p/10927130.html
Copyright © 2011-2022 走看看