首页 > 编程语言 >每日算法--2023.3.2

每日算法--2023.3.2

时间:2023-03-02 21:58:12浏览次数:43  
标签:-- lock 2023.3 int 算法 num res new public

1.剑指offer46--把数字翻译成字符串

class Solution {
    public int translateNum(int num) {
        List<Integer> container = new LinkedList<>();
        while(num!=0){
            container.add(num%10);
            num = num/10;
        } 
        int n = container.size();
        if(n == 0){
            return 1;
        }
        int[] nums = new int[n];
        for(int i = 0;i<n;i++){
            nums[i] = container.get(n-i-1); 
        } 
        int[] dp = new int[n+1];
        dp[0] = 1;dp[1] = 1;
        for(int i = 2;i<=n;i++){
            int a = nums[i-2], b = nums[i-1];
            int sum = a*10+b;
            if(sum>=10&&sum<=25){
                dp[i] = dp[i-1] + dp[i-2];
            }else{
                dp[i] = dp[i-1];
            }
        }
        return dp[n];
    }
}

2.面试题05.02.二进制数转字符串

class Solution {
    public String printBin(double num) {
        int cnt = 0;
        String res = new String("0.");
        while(cnt<32){
            num = num*2;
            if(num>1.0){
                num = num-1;
                res += "1";
            }else if(num == 1.0){
                 res += "1";
                 break;   
            }else{
                res += "0";
            }
            cnt++;    
        }
        if(num!=1.0){
            return new String("ERROR");
        }
        return res;
    }
}

 3.手写异步生产者消费者模式

import java.util.Deque;
import java.util.LinkedList;
import java.util.List;

class Message{
    int value;
    Message(int value) {
        this.value = value;
    }
}

class MesssaeQueue{
    private int capacity;
    private Deque<Message> queue;
    Object lock;
    MesssaeQueue(int capacity){
        this.capacity = capacity;
        queue = new LinkedList<>();
        lock = new Object();
    }
    public void put(Message message){
        synchronized (lock){
            while(queue.size() == capacity){
                System.out.println("消息队列满了");
                try {
                    lock.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            queue.addLast(message);
            lock.notifyAll();
        }
    }
    public Message get(){
        synchronized (lock) {
            while (queue.isEmpty()) {
                System.out.println("暂时没有消息,请等待");
                try {
                    lock.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

            Message res = queue.removeFirst();
            lock.notifyAll();
            return res;
        }
    }

}
public class ProduceConsumer {
    public static void main(String[] args) {
        MesssaeQueue messsaeQueue = new MesssaeQueue(100);
        for(int i = 0;i<1000;i++){
            int id = i;
            new Thread(()->{
                messsaeQueue.put(new Message(id));
            }).start();
        }

        new Thread(()->{
            while(true){
                System.out.println(messsaeQueue.get().value);
            }
        }).start();

    }
}

  

  

标签:--,lock,2023.3,int,算法,num,res,new,public
From: https://www.cnblogs.com/lyjps/p/17173691.html

相关文章

  • 完全相同的两条数据如何进行修改
    1.背景​ 前几日打工的时候发现的一个神奇的bug当我在NAVCATE(sqlserver)中用鼠标修改一条数据时会同时修改另一条数据,当时瞬间懵逼,然后定睛一看妈的这个表建表的时候没给i......
  • SQL注入之延时注入(10)
    以下提供两种方式进行延时注入GET/sqli/Less-10/?id=1"+and+sleep(5)--+HTTP/1.1Host:192.168.245.146:6101User-Agent:Mozilla/5.0(X11;Linuxx86_64;rv:102.0......
  • Android-Toast
    Toast(吐司) Android用于提示信息的一个控件也就是一个消息提示框,能显示一个框,没任何按钮,一段时间过后自动消失,是很常用的一个知识   toast的使用非常简单,格式和......
  • 03.02 再不要给自己设限
    泥岗的饭堂虽好,也快吃腻了,终于打算尝试之前不敢尝试的油泼面。之所以不敢尝试只是因为辣,我固执地自认为并不能吃辣,直到端着一碗面坐下,吃上第一口,恍然发现辣事实上并不只是......
  • 代码随想录算法训练营第二天 | 977. 有序数组的平方、27.移除元素
    LeetCode977.有序数组的平方链接:https://leetcode.cn/problems/squares-of-a-sorted-array/classSolution{public:vector<int>sortedSquares(vector<int>&nu......
  • Linux SO_REUSEPORT与SO_REUSEADDR
    SO_REUSEADDR一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用。SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的......
  • 索引分类
    聚集索引(聚簇索引)(ClusteredIndex)将数据存储与索引放在一起,索引结构的叶子节点保存了行数据,必须有,而且只能有一个二级索引(非聚餐索引)(SecondaryIndex)将数据与索引分......
  • 使用ansible部署服务到k8s
    使用ansible部署服务到k8s#概述主要功能:镜像构建与推送到私有镜像仓库环境初始化(创建namespace、储存卷、驱动等)部署监控(prometheus、grafana、loki)部署服务......
  • flask - fastapi (python 异步API 框架 可以自动生成swagger 文档) 常用示例 以及整合eu
    flask-fastapi(python异步API框架可以自动生成swagger文档)常用示例以及整合eurakanacosflask-fastapi  (python异步API框架 可以自动生成swagger文......
  • 每日总结2023/3/2
    今天连接成功本地数据库登录成功,  成功在数据库存入和读取账号,发现在文件中存在表,账号等存不进去,导致登录失败publicvoidinsert(Stringname,Stringpassw......